展会信息港展会大全

Android网络请求方式详解
来源:互联网   发布日期:2015-09-28 16:24:56   浏览:2880次  

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

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

java.net包中的HttpURLConnection类

Get方式:

01

// Get方式请求

02

public static void requestByGet() throws Exception {

03

String path = "https://reg.163.com/logins.jsp?id=helloworld&pwd=android";

04

// 新建一个URL对象

05

URL url = new URL(path);

06

// 打开一个HttpURLConnection连接

07

HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();

08

// 设置连接超时时间

09

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方式:

01

// Post方式请求

02

public static void requestByPost() throws Throwable {

03

String path = "https://reg.163.com/logins.jsp";

04

// 请求的参数转换为byte数组

05

String params = "id=" + URLEncoder.encode("helloworld", "UTF-8")

06

+ "&pwd=" + URLEncoder.encode("android", "UTF-8");

07

byte[] postData = params.getBytes();

08

// 新建一个URL对象

09

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-Type

22

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方式:

01

// HttpGet方式请求

02

public static void requestByHttpGet() throws Exception {

03

String path = "https://reg.163.com/logins.jsp?id=helloworld&pwd=android";

04

// 新建HttpGet对象

05

HttpGet httpGet = new HttpGet(path);

06

// 获取HttpClient对象

07

HttpClient httpClient = new DefaultHttpClient();

08

// 获取HttpResponse实例

09

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方式:

01

// HttpPost方式请求

02

public static void requestByHttpPost() throws Exception {

03

String path = "https://reg.163.com/logins.jsp";

04

// 新建HttpPost对象

05

HttpPost httpPost = new HttpPost(path);

06

// Post参数

07

List<NameValuePair> params = new ArrayList<NameValuePair>();

08

params.add(new BasicNameValuePair("id", "helloworld"));

09

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

}

赞助本站

人工智能实验室

相关热词: 网络请求

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港