我们在调用第三方接口的时候,有的时候需要采用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
--------------------------------------------------------------
转载于:https://blog.51cto.com/jianboli/1874536