Android应用经常会和服务器端交互,这就需要手机客户端发送网络请求,下面介绍四种常用网络请求方式,我这边是通过Android单元测试来完成这四种方法的

java.net包中的HttpURLConnection类

Get方式:

 1 // Get方式请求 2 public static void requestByGet() throws Exception { 3     String path = "https://reg.163.com/logins.jsp?id=helloworld&pwd=android"; 4     // 新建一个URL对象 5     URL url = new URL(path); 6     // 打开一个HttpURLConnection连接 7     HttpURLConnection urlConn = (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, new String(data, "UTF-8"));18     } else {19         Log.i(TAG_GET, "Get方式请求失败");20     }21     // 关闭连接22     urlConn.disconnect();23 }

Post方式:

 1 // Post方式请求 2 public static void requestByPost() throws Throwable { 3     String path = "https://reg.163.com/logins.jsp"; 4     // 请求的参数转换为byte数组 5     String params = "id=" + URLEncoder.encode("helloworld", "UTF-8") 6             + "&pwd=" + URLEncoder.encode("android", "UTF-8"); 7     byte[] postData = params.getBytes(); 8     // 新建一个URL对象 9     URL url = new URL(path);10     // 打开一个HttpURLConnection连接11     HttpURLConnection urlConn = (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-Type22     urlConn.setRequestProperty("Content-Type",23             "application/x-www-form-urlencode");24     // 开始连接25     urlConn.connect();26     // 发送请求参数27     DataOutputStream dos = new DataOutputStream(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, new String(data, "UTF-8"));37     } else {38         Log.i(TAG_POST, "Post方式请求失败");39     }40 }

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

Get方式:

 1 // HttpGet方式请求 2 public static void requestByHttpGet() throws Exception { 3     String path = "https://reg.163.com/logins.jsp?id=helloworld&pwd=android"; 4     // 新建HttpGet对象 5     HttpGet httpGet = new HttpGet(path); 6     // 获取HttpClient对象 7     HttpClient httpClient = new DefaultHttpClient(); 8     // 获取HttpResponse实例 9     HttpResponse httpResp = httpClient.execute(httpGet);10     // 判断是够请求成功11     if (httpResp.getStatusLine().getStatusCode() == HTTP_200) {12         // 获取返回的数据13         String result = 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 }

Post方式:

 1 // HttpPost方式请求 2 public static void requestByHttpPost() throws Exception { 3     String path = "https://reg.163.com/logins.jsp"; 4     // 新建HttpPost对象 5     HttpPost httpPost = new HttpPost(path); 6     // Post参数 7     List<NameValuePair> params = new ArrayList<NameValuePair>(); 8     params.add(new BasicNameValuePair("id", "helloworld")); 9     params.add(new BasicNameValuePair("pwd", "android"));10     // 设置字符集11     HttpEntity entity = new UrlEncodedFormEntity(params, HTTP.UTF_8);12     // 设置参数实体13     httpPost.setEntity(entity);14     // 获取HttpClient对象15     HttpClient httpClient = new DefaultHttpClient();16     // 获取HttpResponse实例17     HttpResponse httpResp = httpClient.execute(httpPost);18     // 判断是够请求成功19     if (httpResp.getStatusLine().getStatusCode() == HTTP_200) {20         // 获取返回的数据21         String result = 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 }

更多相关文章

  1. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
  2. Android屏幕分辨率正确获取及PX,DPI,DP,SP等的对应关系
  3. android 获取唯一标识
  4. android拍照与读取相册
  5. Android使用Retrofit进行网络请求
  6. Android(安卓)热点开关状态的判断和获取热点ssid
  7. Android软键盘适配问题
  8. android 创建桌面快捷方式 、插件
  9. AIR Native Extension的使用(Android)一 : 打包ane

随机推荐

  1. 自定义 Android(安卓)对话框 (AlertDialo
  2. android MediaPlayer SurfaceView 网络视
  3. Android TextView 字体描边
  4. Ubantu云服务器上配置Gradle 命令自动打
  5. Android service process thread 关系
  6. Android 旧电视退出效果
  7. How to make android app's background i
  8. android 返回键退出程序
  9. Android工具类
  10. Android中帧动画实现