HttpClient 入门

HttpClient 入门

​ 尽管 java.net 包提供了基础的功能,可以通过 HTTP 协议来访问网络资源,但它没有提供许多应用需要的灵活性或功能性。
​ HttpClient 通过高效,即时,并且富有特色的包填补 java.net 这一空缺,实现了 HTTP 绝大部分的标准和建议的客户端。

​ 用于扩展,并为基础 HTTP 协议提供鲁棒性支持的 HttpClient 将受到那些构建 HTTP 客户端应用的用户青睐,
例如 web 浏览器,网络服务客户端,或者是运用或扩展 HTTP 协议用于分布式会议。

HttpClient 不是什么

​ HttpClient 不是浏览器,它是客户端的 HTTP 传输库。它的目的在于发送、接受 HTTP 信息。如果没有明确设置,或者重新格式化请求 / 重写定位 URI, 或其它不涉及 HTTP 传输的功能,HttpClient 不会去解析内容,运行嵌入在 HTML 页面的 javascript 代码,获取内容类型(content type)。

简单入门

public static void main(String[] args) throws IOException, URISyntaxException
    {
        CloseableHttpClient client = HttpClients.createDefault();
        // 请求地址
        String uri = "http://localhost:8002/test"
        HttpGet httpGet = new HttpGet(uri);
        CloseableHttpResponse response = client.execute(httpGet);

        try
        {
            System.out.println("消息协议:" + response.getProtocolVersion());
            System.out.println("返回状态码:" + response.getStatusLine().getStatusCode());
            System.out.println("返回短句:" + response.getStatusLine().getReasonPhrase());

        } finally
        {
            response.close();
        }

    }

第二种:将String 变成URI对象进行封装请求地址

 // 用这种方式拼接,也可以直接写字符串
URI uri = new URIBuilder().setScheme("http").setHost("localhost").setPort(8002)
    .setPath("test")
    .build();
HttpGet httpGet = new HttpGet(uri);

读取response返回信息

 /**
  * 返回json串
  * {
  *      code:
  *      msg:
  *      result:
  * }
  */
CloseableHttpResponse response = httpclient.execute(httpPost);

try
{
    String respStr = null;
    HttpEntity entity = response.getEntity();
    if(entity != null) {
        respStr = EntityUtils.toString(entity, "UTF-8");
    }
    JSONObject message = JSONObject.parseObject(respStr);

    logger.info("msg : " + message.get("msg"));

    status = message.get("result") == "true" ? true : false;

    // 释放资源
    EntityUtils.consume(entity);

} finally
{
    response.close();
}

HTML 参数设置

URI 方式

 // 用这种方式拼接,也可以直接写字符串
URI uri = new URIBuilder().setScheme("http").setHost("localhost").setPort(8002)
    .setPath("test")
    // 设置setParameter
    .setParameter("s", "小菜鸡")
    .build();
HttpGet httpGet = new HttpGet(uri);

UrlEncodedFormEntity 实体类来帮助处理

CloseableHttpClient client = HttpClients.createDefault();
HttpPost httpPost = new HttpPost("http://localhost:8002/test");

ArrayList<NameValuePair> list = new ArrayList<>();
list.add(new BasicNameValuePair("s", "垃圾"));
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(list, Consts.UTF_8);

httpPost.setEntity(formEntity);

CloseableHttpResponse response = client.execute(httpPost);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值