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;
}
版权声明:本文为chenshufei2原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。