Android的HttpUrlConnection类的GET和POST请求

 1  /**
 2      * get方法使用
 3      */
 4     private void httpGet() {
 5         new Thread() {
 6             @Override
 7             public void run() {            //此处的LOGIN是请求地址后面是拼接的参数
 8                 String path = LOGIN + "?phone=12345678900&password=123456";
 9                 URL url;
10                 HttpURLConnection connection;
11                 try {
12                     url = new URL(path);
13                     connection = (HttpURLConnection) url.openConnection();
14                     connection.setConnectTimeout(4000);//设置链接超时
15                     connection.setRequestMethod("GET");//设置请求方法
16
17                     connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");//设置请求体的内容,处处默认也是一样表示请求的是文本内容
18
19                     int responseCode = connection.getResponseCode();
20                     if (responseCode == HttpURLConnection.HTTP_OK) {
21                         InputStream inputStream = connection.getInputStream();
22                         final String s = stremToString(inputStream);
23
24                         runOnUiThread(new Runnable() {
25                             @Override
26                             public void run() {
27                                 Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();
28                             }
29                         });
30                         inputStream.close();
31                     }
32
33                 } catch (Exception e) {
34                     e.printStackTrace();
35                 }
36             }
37         }.start();
38     }
 1    /**
 2      * post方法
 3      */
 4     private void httpPost(final Map<String, String> prams) {
 5         new Thread() {
 6             @Override
 7             public void run() {
 8                 if (prams == null) {
 9                     runOnUiThread(new Runnable() {
10                         @Override
11                         public void run() {
12                             Toast.makeText(MainActivity.this, "缺少参数!", Toast.LENGTH_SHORT).show();
13                         }
14                     });
15                     return;
16                 }
17                 URL url;
18                 HttpURLConnection connection;
19                 try {
20                     //拼接传入的请求参数
21                     StringBuffer buffer = new StringBuffer();
22                     //读取传入的map集合里参数
23                     for (Map.Entry<String, String> entry : prams.entrySet()) {
24                         String key = entry.getKey();
25                         String value = entry.getValue();
26                         //拼接参数 例如:phone = 12345678900 & password = 123456
27                         buffer.append(key + "=" + URLEncoder.encode(value, "utf-8") + "&");
28                     }
29                     //此处是删除末尾拼接的 & 符号
30                     buffer.deleteCharAt(buffer.length() - 1);
31                     //REGISTER 是我自己服务器的一个测试请求地址
32                     url = new URL(REGISTER);
33                     connection = (HttpURLConnection) url.openConnection();
34                     connection.setConnectTimeout(4000);
35
36                     //此处的输出流表示  服务器对客服端的响应输出流 即InPutStream
37                     //此处的输入流表示 客服端向服务器输入数据即 OutPutStream
38                     connection.setDoInput(true);//获取服务器的响应输出流 此处默认是true 可以不用设置
39                     connection.setDoOutput(true);//设置允许向服务其写入数据,获取向服务器的输入流。
40                     connection.setRequestMethod("POST");
41                     //此处设置向服务器请求的内容 请求的是文本内容 默认是可以不用设置的
42                     connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
43                     //设置向服务器输入的请求体长度
44                     connection.setRequestProperty("Content-Length", String.valueOf(buffer.toString().getBytes().length));
45                     //向服务器写入请求体
46                     connection.getOutputStream().write(buffer.toString().getBytes());
47                     //获取请求状态吗 HttpURLConnection.HTTP_OK 为请求成功 写200 也可以的
48                     int responseCode = connection.getResponseCode();
49                     if (responseCode == HttpURLConnection.HTTP_OK) {
50                         InputStream inputStream = connection.getInputStream();
51                         final String result = stremToString(inputStream);
52                         runOnUiThread(new Runnable() {
53                             @Override
54                             public void run() {
55                                 Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show();
56                             }
57                         });
58                         inputStream.close();
59                     }
60
61                 } catch (Exception e) {
62                     e.printStackTrace();
63                 }
64             }
65         }.start();
66     }
 1  /**
 2      * 把输入流转换成字符串
 3      *
 4      * @param inputStream
 5      * @return
 6      * @throws IOException
 7      */
 8     private String stremToString(InputStream inputStream) throws IOException {
 9         ByteArrayOutputStream bos = new ByteArrayOutputStream();
10         if (inputStream != null) {
11             int len;
12             byte[] bytes = new byte[1024];
13             while ((len = inputStream.read(bytes)) != -1) {
14                 bos.write(bytes, 0, len);
15             }
16             return bos.toString();
17         } else {
18             return "";
19         }
20     }

最后 各位小伙伴们 又不懂或不清楚的可以给我留言 欢迎大家给我提出建议 或是指出问题 我们彼此都需要一个学习的过程

时间: 2024-10-01 03:27:25

Android的HttpUrlConnection类的GET和POST请求的相关文章

Android之使用HttpURLConnection类查看网络图片以及网络源码

1.首先,来介绍一下HttpURLConnection类,HttpURLConnection类位于java.net包中,用于发送HTTP请求和获取HTTP响应.由于此类是抽象类,不能直接实例化对象,所以需要使用URL的openConnection()方法来获得. 例如,要创建一个http://www.baidu.com 网站对应的HttpURLConnection对象,可以使用下列代码: URL url=new URL("http://www.baidu.com"); HttpURLC

Android常用工具类

主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java.目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils.PreferencesUtils.JSONUtils.FileUtils.ResourceUtils.StringUtils.ParcelUtils.RandomUtils.ArrayUtils.ImageUtils.ListUtils.MapUtils.ObjectUtils.SerializeUtils.S

Android中HttpURLConnection使用详解

认识Http协议 Android中发送http网络请求是很常见的,要有GET请求和POST请求.一个完整的http请求需要经历两个过程:客户端发送请求到服务器,然后服务器将结果返回给客户端,如下图所示: 客户端->服务器 客户端向服务器发送请求主要包含以下信息:请求的Url地址.请求头以及可选的请求体,打开百度首页,客户端向服务器发送的信息如下所示: 请求URL(Request URL) 上图中的Request URL就是请求的Url地址,即https://www.baidu.com,该Url没

Android使用HttpURLConnection下载图片

讲到http就必需要了解URI和URL URI (uniform resource identifier)统一资源标志符: URL(uniform resource location )统一资源定位符(或统一资源定位器): 可以理解成URL是URI的子集,URI是一抽象的标识符,URL可以理解成具体的标识符:只要是网络上的资源就能找到唯一的URL. 目录结构 效果图 关键代码 HttpUtils.java类 package com.dzt.downloadimage.utils; import

Android 常用工具类

1.DensityUtils /** * 常用单位转换的辅助类 */ public class DensityUtils { private DensityUtils() { /* cannot be instantiated */ throw new UnsupportedOperationException("cannot be instantiated"); } /** * dp转px * * @param context * @param dpVal * @return */

Android常用工具类(收藏)

Android常用工具类 主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java. 目前包括(HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils.PreferencesUtils.JSONUtils.FileUtils.ResourceUtils.StringUtils.ParcelUtils.RandomUtils.ArrayUtils.ImageUtils.ListUtils.MapUtils.ObjectUtils.S

Android常用工具类 (转)

主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java.目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils.PreferencesUtils.JSONUtils.FileUtils.ResourceUtils.StringUtils.ParcelUtils.RandomUtils.ArrayUtils.ImageUtils.ListUtils.MapUtils.ObjectUtils.SerializeUtils.S

53. Android常用工具类

主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java.目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils.PreferencesUtils.JSONUtils.FileUtils.ResourceUtils.StringUtils.ParcelUtils.RandomUtils.ArrayUtils.ImageUtils.ListUtils.MapUtils.ObjectUtils.SerializeUtils.S

[Android自定义控件] Android Scroller工具类和GestureDetector的简单用法

转载:http://ipjmc.iteye.com/blog/1615828 Android里Scroller类是为了实现View平滑滚动的一个Helper类.通常在自定义的View时使用,在View中定义一个私有成员mScroller = new Scroller(context).设置mScroller滚动的位置时,并不会导致View的滚动,通常是用mScroller记录/计算View滚动的位置,再重写View的computeScroll(),完成实际的滚动. mScroller.getCu