http://blog.csdn.net/zuolongsnail/article/details/6373051

Android应用经常会和服务器端交互,这就需要手机客户端发送网络请求,下面介绍四种常用网络请求方式,我这边是通过Android单元测试来完成这四种方法的,还不清楚Android的单元测试的同学们请看Android开发技巧总结中的Android单元测试的步骤一文。

java.net包中的HttpURLConnection类

Get方式:

[java] view plain copy print ?
  1. //Get方式请求
  2. publicstaticvoidrequestByGet()throwsException{
  3. Stringpath="https://reg.163.com/logins.jsp?id=helloworld&pwd=android";
  4. //新建一个URL对象
  5. URLurl=newURL(path);
  6. //打开一个HttpURLConnection连接
  7. HttpURLConnectionurlConn=(HttpURLConnection)url.openConnection();
  8. //设置连接超时时间
  9. urlConn.setConnectTimeout(5*1000);
  10. //开始连接
  11. urlConn.connect();
  12. //判断请求是否成功
  13. if(urlConn.getResponseCode()==HTTP_200){
  14. //获取返回的数据
  15. byte[]data=readStream(urlConn.getInputStream());
  16. Log.i(TAG_GET,"Get方式请求成功,返回数据如下:");
  17. Log.i(TAG_GET,newString(data,"UTF-8"));
  18. }else{
  19. Log.i(TAG_GET,"Get方式请求失败");
  20. }
  21. //关闭连接
  22. urlConn.disconnect();
  23. }
// Get方式请求 public static void requestByGet() throws Exception { String path = "https://reg.163.com/logins.jsp?id=helloworld&pwd=android"; // 新建一个URL对象 URL url = new URL(path); // 打开一个HttpURLConnection连接 HttpURLConnection urlConn = (HttpURLConnection) url.openConnection(); // 设置连接超时时间 urlConn.setConnectTimeout(5 * 1000); // 开始连接 urlConn.connect(); // 判断请求是否成功 if (urlConn.getResponseCode() == HTTP_200) { // 获取返回的数据 byte[] data = readStream(urlConn.getInputStream()); Log.i(TAG_GET, "Get方式请求成功,返回数据如下:"); Log.i(TAG_GET, new String(data, "UTF-8")); } else { Log.i(TAG_GET, "Get方式请求失败"); } // 关闭连接 urlConn.disconnect(); }

Post方式:

[java] view plain copy print ?
  1. //Post方式请求
  2. publicstaticvoidrequestByPost()throwsThrowable{
  3. Stringpath="https://reg.163.com/logins.jsp";
  4. //请求的参数转换为byte数组
  5. Stringparams="id="+URLEncoder.encode("helloworld","UTF-8")
  6. +"&pwd="+URLEncoder.encode("android","UTF-8");
  7. byte[]postData=params.getBytes();
  8. //新建一个URL对象
  9. URLurl=newURL(path);
  10. //打开一个HttpURLConnection连接
  11. HttpURLConnectionurlConn=(HttpURLConnection)url.openConnection();
  12. //设置连接超时时间
  13. urlConn.setConnectTimeout(5*1000);
  14. //Post请求必须设置允许输出
  15. urlConn.setDoOutput(true);
  16. //Post请求不能使用缓存
  17. urlConn.setUseCaches(false);
  18. //设置为Post请求
  19. urlConn.setRequestMethod("POST");
  20. urlConn.setInstanceFollowRedirects(true);
  21. //配置请求Content-Type
  22. urlConn.setRequestProperty("Content-Type",
  23. "application/x-www-form-urlencode");
  24. //开始连接
  25. urlConn.connect();
  26. //发送请求参数
  27. DataOutputStreamdos=newDataOutputStream(urlConn.getOutputStream());
  28. dos.write(postData);
  29. dos.flush();
  30. dos.close();
  31. //判断请求是否成功
  32. if(urlConn.getResponseCode()==HTTP_200){
  33. //获取返回的数据
  34. byte[]data=readStream(urlConn.getInputStream());
  35. Log.i(TAG_POST,"Post请求方式成功,返回数据如下:");
  36. Log.i(TAG_POST,newString(data,"UTF-8"));
  37. }else{
  38. Log.i(TAG_POST,"Post方式请求失败");
  39. }
  40. }
// Post方式请求 public static void requestByPost() throws Throwable { String path = "https://reg.163.com/logins.jsp"; // 请求的参数转换为byte数组 String params = "id=" + URLEncoder.encode("helloworld", "UTF-8") + "&pwd=" + URLEncoder.encode("android", "UTF-8"); byte[] postData = params.getBytes(); // 新建一个URL对象 URL url = new URL(path); // 打开一个HttpURLConnection连接 HttpURLConnection urlConn = (HttpURLConnection) url.openConnection(); // 设置连接超时时间 urlConn.setConnectTimeout(5 * 1000); // Post请求必须设置允许输出 urlConn.setDoOutput(true); // Post请求不能使用缓存 urlConn.setUseCaches(false); // 设置为Post请求 urlConn.setRequestMethod("POST"); urlConn.setInstanceFollowRedirects(true); // 配置请求Content-Type urlConn.setRequestProperty("Content-Type", "application/x-www-form-urlencode"); // 开始连接 urlConn.connect(); // 发送请求参数 DataOutputStream dos = new DataOutputStream(urlConn.getOutputStream()); dos.write(postData); dos.flush(); dos.close(); // 判断请求是否成功 if (urlConn.getResponseCode() == HTTP_200) { // 获取返回的数据 byte[] data = readStream(urlConn.getInputStream()); Log.i(TAG_POST, "Post请求方式成功,返回数据如下:"); Log.i(TAG_POST, new String(data, "UTF-8")); } else { Log.i(TAG_POST, "Post方式请求失败"); } }

org.apache.http包中的HttpGet和HttpPost类

Get方式:

[java] view plain copy print ?
  1. //HttpGet方式请求
  2. publicstaticvoidrequestByHttpGet()throwsException{
  3. Stringpath="https://reg.163.com/logins.jsp?id=helloworld&pwd=android";
  4. //新建HttpGet对象
  5. HttpGethttpGet=newHttpGet(path);
  6. //获取HttpClient对象
  7. HttpClienthttpClient=newDefaultHttpClient();
  8. //获取HttpResponse实例
  9. HttpResponsehttpResp=httpClient.execute(httpGet);
  10. //判断是够请求成功
  11. if(httpResp.getStatusLine().getStatusCode()==HTTP_200){
  12. //获取返回的数据
  13. Stringresult=EntityUtils.toString(httpResp.getEntity(),"UTF-8");
  14. Log.i(TAG_HTTPGET,"HttpGet方式请求成功,返回数据如下:");
  15. Log.i(TAG_HTTPGET,result);
  16. }else{
  17. Log.i(TAG_HTTPGET,"HttpGet方式请求失败");
  18. }
  19. }
// HttpGet方式请求 public static void requestByHttpGet() throws Exception { String path = "https://reg.163.com/logins.jsp?id=helloworld&pwd=android"; // 新建HttpGet对象 HttpGet httpGet = new HttpGet(path); // 获取HttpClient对象 HttpClient httpClient = new DefaultHttpClient(); // 获取HttpResponse实例 HttpResponse httpResp = httpClient.execute(httpGet); // 判断是够请求成功 if (httpResp.getStatusLine().getStatusCode() == HTTP_200) { // 获取返回的数据 String result = EntityUtils.toString(httpResp.getEntity(), "UTF-8"); Log.i(TAG_HTTPGET, "HttpGet方式请求成功,返回数据如下:"); Log.i(TAG_HTTPGET, result); } else { Log.i(TAG_HTTPGET, "HttpGet方式请求失败"); } }

Post方式:

[java] view plain copy print ?
  1. //HttpPost方式请求
  2. publicstaticvoidrequestByHttpPost()throwsException{
  3. Stringpath="https://reg.163.com/logins.jsp";
  4. //新建HttpPost对象
  5. HttpPosthttpPost=newHttpPost(path);
  6. //Post参数
  7. List<NameValuePair>params=newArrayList<NameValuePair>();
  8. params.add(newBasicNameValuePair("id","helloworld"));
  9. params.add(newBasicNameValuePair("pwd","android"));
  10. //设置字符集
  11. HttpEntityentity=newUrlEncodedFormEntity(params,HTTP.UTF_8);
  12. //设置参数实体
  13. httpPost.setEntity(entity);
  14. //获取HttpClient对象
  15. HttpClienthttpClient=newDefaultHttpClient();
  16. //获取HttpResponse实例
  17. HttpResponsehttpResp=httpClient.execute(httpPost);
  18. //判断是够请求成功
  19. if(httpResp.getStatusLine().getStatusCode()==HTTP_200){
  20. //获取返回的数据
  21. Stringresult=EntityUtils.toString(httpResp.getEntity(),"UTF-8");
  22. Log.i(TAG_HTTPGET,"HttpPost方式请求成功,返回数据如下:");
  23. Log.i(TAG_HTTPGET,result);
  24. }else{
  25. Log.i(TAG_HTTPGET,"HttpPost方式请求失败");
  26. }
  27. }
// HttpPost方式请求 public static void requestByHttpPost() throws Exception { String path = "https://reg.163.com/logins.jsp"; // 新建HttpPost对象 HttpPost httpPost = new HttpPost(path); // Post参数 List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("id", "helloworld")); params.add(new BasicNameValuePair("pwd", "android")); // 设置字符集 HttpEntity entity = new UrlEncodedFormEntity(params, HTTP.UTF_8); // 设置参数实体 httpPost.setEntity(entity); // 获取HttpClient对象 HttpClient httpClient = new DefaultHttpClient(); // 获取HttpResponse实例 HttpResponse httpResp = httpClient.execute(httpPost); // 判断是够请求成功 if (httpResp.getStatusLine().getStatusCode() == HTTP_200) { // 获取返回的数据 String result = EntityUtils.toString(httpResp.getEntity(), "UTF-8"); Log.i(TAG_HTTPGET, "HttpPost方式请求成功,返回数据如下:"); Log.i(TAG_HTTPGET, result); } else { Log.i(TAG_HTTPGET, "HttpPost方式请求失败"); } }

以上是一些部分代码,测试的时候在测试类中运行对应的测试方法即可。完整代码点这里下载

更多相关文章

  1. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
  2. Android百度地图——定位SDK(版本v3.1)(一)
  3. Android(安卓)自动编译、打包生成apk文件 1 - 命令行方式
  4. Android五种数据存储方式
  5. Android软键盘显示模式及打开和关闭方式(推荐)
  6. Android(安卓)Wifi获取组播
  7. Android中retrofit网络请求框架使用
  8. Android(安卓)Service+Socket 联网交互
  9. android IPC 通讯机制

随机推荐

  1. mac下配置android环境变量
  2. 如何查看android数据文件?
  3. Android(安卓)动画资源
  4. Button Android
  5. android简易网页播放器
  6. 使用 Intel HAXM 为 Android 模拟器加速,
  7. Android ActivitiyThread的建立
  8. 弹窗样式dialog
  9. :Android实现程序前后台切换效果
  10. Android TextView的字符过滤功能