我们在调用第三方接口的时候,有的时候需要采用http协议进行通信,这里简单介绍一下http请求的执行过程。

  写在前面:

你需要找到一个能访问的接口url,知道需要传递什么参数,请求的编码格式。

下面是我写的一个示例。
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协议的常用术语:

。。。。。

--------------------------------------------------------------

欢迎你的阅读,如有描述不对之处请留言。我是Jon,让我们一起成长。

最新更新:2016年11月19日12:10:26

--------------------------------------------------------------