HttpClients下载与入门

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用

Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我 们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮 性。因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会更加深入。

 

你可以从官方获取最新版本:http://hc.apache.org/index.html。也可以从这里获取官方使用入门示例。
以下示例,输出所有头内容,和页面返回的内容。


import java.io.ByteArrayOutputStream;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.List;

import org.apache.http.Header;

import org.apache.http.HttpEntity;

import org.apache.http.NameValuePair;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.CloseableHttpResponse;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.message.BasicNameValuePair;

public class QuickStart {

 public static void main(String[] args) {

  try {

   CloseableHttpClient httpclient = HttpClients.createDefault();

   HttpGet httpGet = new HttpGet("http://javacui.com");

   CloseableHttpResponse response1 = httpclient.execute(httpGet);

   try {

       System.out.println(response1.getStatusLine()); // 读取状态信息

        

       Header[] hd = response1.getAllHeaders(); // 所有头信息

       for(Header h : hd){

        System.out.println(h.getName() + ":" + h.getValue());

       }

        

       HttpEntity entity1 = response1.getEntity();

       System.out.println(EntityUtils.toString(entity1));

   } finally {

       response1.close();

   }

   HttpPost httpPost = new HttpPost("http://javacui.com");

   List <NameValuePair> paras = new ArrayList <NameValuePair>(); // 设置表单参数

   paras.add(new BasicNameValuePair("username", "name"));

   paras.add(new BasicNameValuePair("password", "pass"));

   httpPost.setEntity(new UrlEncodedFormEntity(paras));

   CloseableHttpResponse response2 = httpclient.execute(httpPost);

   try {

    System.out.println(response1.getStatusLine()); // 读取状态信息

        

       Header[] hd = response1.getAllHeaders(); // 所有头信息

       for(Header h : hd){

        System.out.println(h.getName() + ":" + h.getValue());

       }

        

       HttpEntity entity1 = response1.getEntity();

       System.out.println(EntityUtils.toString(entity1));

   } finally {

       response2.close();

   }

  } catch (Exception e) {

   e.printStackTrace();

  }

 }

  

 /**

  * 读取流

  */

 public static byte[] readStream(InputStream inStream) throws Exception {

  ByteArrayOutputStream outSteam = new ByteArrayOutputStream();

  byte[] buffer = new byte[1024];

  int len = -1;

  while ((len = inStream.read(buffer)) != -1) {

   outSteam.write(buffer, 0, len);

  }

  outSteam.close();

  inStream.close();

  return outSteam.toByteArray();

 }

} 

// 结束

GET和POST请求都输出了获取到的服务器内容,POST请求设置了请求的表单参数。

标签: 代码 服务器

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:ApachePOI 动态列表生成excel

下一篇: iOS使用代码截图