我们在调用第三方接口的时候,有的时候需要采用http协议进行通信,这里简单介绍一下http请求的执行过程。
写在前面:
1
2
3
|
你需要找到一个能访问的接口url,知道需要传递什么参数,请求的编码格式。 下面是我写的一个示例。 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
package cn.sccl.lijianbo;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.junit.Test;
/** * 测试http的访问需要的条件
* http执行的流程
* @author lijianbo
* 2016年11月19日11:28:12
*
*/
public class HttpFlow2 {
@Test public void testHttpFlow() {
try {
/*
* 接口url
*/
String url = "https://www.baidu.com/" ;//需要自己修改
/*
* 发送请求
*/
// 建立HttpPost对象
HttpPost httpPost = new HttpPost(url);
// 建立一个NameValuePair数组,用于存储欲传送的参数
List<NameValuePair> params = new ArrayList<NameValuePair>();
/*
* 添加参数
*/
params.add( new BasicNameValuePair( "name" , "小明" ));
params.add( new BasicNameValuePair( "password" , "123456" ));
// 设置请求参数编码
httpPost.setEntity( new UrlEncodedFormEntity(params, HTTP.UTF_8));
/*
* 设置请求头,好像这里也可以不用处理
*/
/*if (httpParameter2 != null && !httpParameter2.isEmptyHeader()) {
Set<Entry<String, String>> set = httpParameter2.getHeaderMap()
.entrySet();
for (Entry<String, String> e : set) {
httpPost.addHeader(e.getKey(), e.getValue());
}
}*/
// 发送Post,并返回一个HttpResponse对象
HttpResponse response = new DefaultHttpClient().execute(httpPost);
/*
* 处理返回值
*/
int statusCode = response.getStatusLine().getStatusCode();
HttpEntity entity = response.getEntity();
//设置返回内容编码,并转为string,也可以转换为其他类型
String entityStr = EntityUtils.toString(entity, "UTF-8" );
System.out.println( "状态码为===" + statusCode);
System.out.println( "返回内容为===" + entityStr);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} } /*说明: * List<NameValuePair> params = new ArrayList<NameValuePair>();
定义了一个list,该list的数据类型是NameValuePair(简单名称值对节点类型),这个代码多处用于Java像url发送Post请求。
在发送post请求时用该list来存放参数。*/ |
输出结果:
状态码为===200
返回内容为==={"status":102,"msg":"phone has been registed\uff01"
写在后面: |
http请求的返回有多种形式,json、xml、HTML、text等,这个要根据接口文档来看,接口返回什么是写接口的人已经确定了的。 |
http协议的常用术语:
。。。。。
本文转自建波李 51CTO博客,原文链接:http://blog.51cto.com/jianboli/1874536,如需转载请自行联系原作者