HttpResponse response = client.execute(post);报空指针。
有点莫名奇妙的,client与post对话经过log与debug,都没有发现是null啊。,。。。
然后开始各种排错,常见的没加网络权限及网络访问没放在子线程中,都没有犯这样错啊。。。
最终注释掉post.setHeaders(headers);,又好了。。。(之前同一份代码在另一工程中,没问题啊。。。)
代码如下:
public static Object post(Context context,RequestVo vo,String IpAddress,String port){ DefaultHttpClient client = new DefaultHttpClient(); String baseUrl = "http://"+IpAddress+":"+port; Log.e("URL:", baseUrl.concat(context.getString(vo.requestUrl))); HttpPost post = new HttpPost(baseUrl.concat(context.getString(vo.requestUrl))); HttpParams params = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(params, 8000); //连接超时 HttpConnectionParams.setSoTimeout(params, 5000); //响应超时 post.setParams(params); //post.setHeaders(headers); //这行代码注释掉,不能给post加头 Object obj = null; try { //设置请求参数 if(vo.requestDataMap!=null){ HashMap<String,String> map = vo.requestDataMap; ArrayList<BasicNameValuePair> pairList = new ArrayList<BasicNameValuePair>(); for(Map.Entry<String,String> entry:map.entrySet()){ BasicNameValuePair pair = new BasicNameValuePair(entry.getKey(), entry.getValue()); pairList.add(pair); } HttpEntity entity = new UrlEncodedFormEntity(pairList,Constant.CHARSET); post.setEntity(entity); } HttpResponse response = client.execute(post);//包含响应的状态和返回的结果== if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){ String jsonStr = EntityUtils.toString(response.getEntity(),Constant.CHARSET); Log.e(NetUtil.class.getSimpleName(), jsonStr); try { obj = vo.jsonParser.parseJSON(jsonStr);//回调解析器,解析服务器返回的数据 if(null == obj){ JSONObject json = new JSONObject(jsonStr); String respCode = json.getString(Constant.RESP_CODE); String respDesc = json.getString(Constant.RESP_DESC); if(!TextUtils.isEmpty(respCode)){ ErrorResponse errRes = new ErrorResponse(); errRes.setRespCode(respCode); errRes.setRespDesc(respDesc); obj = errRes; } } } catch (JSONException e) { Log.e(NetUtil.class.getSimpleName(), e.getLocalizedMessage(),e); } return obj; } } catch (ClientProtocolException e) { Log.e(NetUtil.class.getSimpleName(), e.getLocalizedMessage(),e); } catch (IOException e) { Log.e(NetUtil.class.getSimpleName(), e.getLocalizedMessage(),e); } return null; }