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

android-网络编程之HttpClient学习整理

2013年10月09日 ⁄ 综合 ⁄ 共 2271字 ⁄ 字号 评论关闭

 android-sdk集成了多种网络编程的包,Apache的HttpClient来方便我们使用各种Http服务。个人觉得可以把HttpClient想象成一个浏览器,通过它的API我们可以很方便的发出GET,POST请求,在3G和wifi 的环境下,无需做过多的处理,但是在wap环境(cmwap,uniwap,ctwap)下,必须设置代理。具体的代码整理如下:

HttpClient -post方式:

 

public static  Object httpClientpost(RequestVo reqVo){
		 DefaultHttpClient  client=new  DefaultHttpClient();
		 HttpPost  post=new HttpPost(reqVo.requestUrl);
         //post.setHeaders(headers);
		 HttpParams params = client.getParams();
		 //连接超时 时间
		 params.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 6000);
		 //读取数据超时 时间
		 params.setParameter(CoreConnectionPNames.SO_TIMEOUT, 6000);
		 //如果在cmwap  uniwap  ctwap环境就要设置代理
		 HttpHost  host=new HttpHost(Proxy.getDefaultHost(), Proxy.getDefaultPort());
 		 params.setParameter(ConnRouteParams.DEFAULT_PROXY, post);
         
		 Object obj=null;
		 try {
			 if(reqVo.requestDataMap!=null&&!reqVo.requestDataMap.isEmpty()){
				 HashMap<String, String> requestDataMap = reqVo.requestDataMap;
				 ArrayList<BasicNameValuePair> pairList = new ArrayList<BasicNameValuePair>();
			     for(Entry<String, String> map: requestDataMap.entrySet() ){
			    	 pairList.add(new BasicNameValuePair(map.getKey(), map.getValue()));
			     }
			     UrlEncodedFormEntity entity = new UrlEncodedFormEntity(pairList,"UTF-8");
			     post.setEntity(entity);
			    
			 }
			HttpResponse response = client.execute(post);
			if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
				String result = EntityUtils.toString(response.getEntity());
				obj = reqVo.jsonParser.parseJSON(result);
			}
		} catch (ClientProtocolException e) {
			 Log.i(NetUtil.class.getSimpleName(), e.getMessage(), e);
		} catch (IOException e) {
			 Log.i(NetUtil.class.getSimpleName(), e.getMessage(), e);
		} catch (JSONException e) {
			 Log.i(NetUtil.class.getSimpleName(), e.getMessage(), e);

		}
		return obj;
	}

HttpClient-get方式:

public static Object httpClientget(RequestVo reqVo){
		DefaultHttpClient  client=new  DefaultHttpClient();
		HttpGet get=new HttpGet(reqVo.requestUrl);
		//这里可以设一些参数,比如做app推广统计,或者访问量的统计android ios
//		get.setHeaders(headers);
		
		Object obj = null;
		try {
			HttpResponse response = client.execute(get);
			if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
				String result = EntityUtils.toString(response.getEntity());
				obj = reqVo.jsonParser.parseJSON(result);
			}
		} catch (ClientProtocolException e) {
         Log.i(NetUtil.class.getSimpleName(), e.getMessage(), e);
		} catch (IOException e) {
	     Log.i(NetUtil.class.getSimpleName(), e.getMessage(), e);
		} catch (JSONException e) {
		 Log.i(NetUtil.class.getSimpleName(), e.getMessage(), e);
		}
		return obj;
	}

 

 

抱歉!评论已关闭.