1.背景
在开发android 的时候,网络请求时必不可少的,在此,封装成一个类,方便调用;
2.注意
在这里实现了 HttpUrlConnection (不是HttpsUrlConnection)的get请求和 HttpClient 的 Get和 Post请求!
这里封装的仅仅是数据的操作,不包括 图片的请求和上传!
3.HttpUrlConnection 实现
这个请求成功后,需要使用 IO流来读取!
public static String getData() throws Exception{ try { //HttpPath.GetGamesPath() : 网络请求路径 URL url=new URL(HttpPath.GetGamesPath()); HttpURLConnection conn=(HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5000); conn.setRequestMethod("GET"); if(conn.getResponseCode()==200){ InputStream ips=conn.getInputStream(); byte[] data=read(ips); String str=new String(data); System.out.println(str); return str; }else{ return "网络错误 :conn.getResponseCode() ="+conn.getResponseCode(); } } catch (MalformedURLException e) { // TODO Auto-generated catch block return "HttpService.getGamesData()发生异常! "+e.getMessage(); } } /* * 读取流中的数据 * */ public static byte[] read(InputStream inStream) throws Exception { ByteArrayOutputStream outStream=new ByteArrayOutputStream(); byte[] buffer=new byte[1024]; int len=0; while((len=inStream.read(buffer))!=-1){ outStream.write(buffer,0,len); } inStream.close(); return outStream.toByteArray(); }
4.Httpclient , Httppost , EneityUtils 实现 post 请求操作
这里注意的是传参数的时候需要的是
List<BasicNameValuePair> , 参数格式化 需要的是 UrlEncodeFormEntity 方法!
/** * httpclient post提交数据 * @param parameters * @return * @throws ClientProtocolException * @throws IOException */ public static String toPostdata(List<BasicNameValuePair> parameters) throws ClientProtocolException, IOException{ String str="获取失败"; //初始化 HttpClient client=new DefaultHttpClient(); //HttpPath.GetGamesPath() : 网络请求路径 HttpPost httpPost=new HttpPost(HttpPath.GetGamesPath()); //设置参数 UrlEncodedFormEntity params=new UrlEncodedFormEntity(parameters,"UTF-8"); httpPost.setEntity(params); //执行请求 HttpResponse response= client.execute(httpPost); //取得返回值 if(response.getStatusLine().getStatusCode()==200){ //请求成功 HttpEntity entity=response.getEntity(); str=EntityUtils.toString(entity, "UTF-8"); } return str; }
5.Httpclient , Httpget , EneityUtils 实现 get请求操作
/** * httpclient get 获得数据 * @return */ public static String toGetData(){ String str="获取数据失败"; HttpClient client=new DefaultHttpClient(); ////HttpPath.GetGamesPath() : 网络请求路径 HttpGet get=new HttpGet(HttpPath.GetGamesPath()); try { HttpResponse httpResponse=client.execute(get); if(httpResponse.getStatusLine().getStatusCode()==200){ str=EntityUtils.toString(httpResponse.getEntity(),"UTF-8"); } return str; } catch (ClientProtocolException e) { // TODO Auto-generated catch block return "toGetData 异常:"+e.getMessage(); } catch (IOException e) { // TODO Auto-generated catch block return "toGetData 异常:"+e.getMessage(); } }
6.对比
相比之下 HttpClient 比 HttpUrlConnection 更方便些,但是 还是看习惯而言!
7.工具类下载
http://download.csdn.net/detail/lablenet/9005725
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-11-05 17:25:02