现在的位置: 首页 > 综合 > 正文

httpclient HttpResponse response = client.execute(post);报空指针问题

2013年04月12日 ⁄ 综合 ⁄ 共 2028字 ⁄ 字号 评论关闭

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;
		
	}

抱歉!评论已关闭.