• HttpClient请求


    一、背景

      公司有一个需求,就是之前的那个webservice实现的那个模块用http请求的方式实现.jar包下载地址http://files.cnblogs.com/files/antonyhubei/httpclient_jar.zip

    二、介绍Http请求

      HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,RFC 1945定义了HTTP/1.0版本。其中最著名的就是RFC 2616。RFC 2616定义了今天普遍使用的一个版本——HTTP 1.1。

    HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

    HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。

    三、如何执行一个Http请求

    1、创建一个客户端,同时配置响应的参数

    //创建一个客户端
    HttpClient client = new HttpClient(); 
    //主机的配置信息
    HostConfiguration hostConfig = new HostConfiguration();
    //ip 地址,port端口
    hostConfig.setHost(ip, port); 
    //客户端主机的配置
    client.setHostConfiguration(hostConfig);
    //其他的客户端参数
    HttpClientParams params = new HttpClientParams();
    //编码
    params.setContentCharset("utf-8");
    //是否是长连接
    params.setParameter("Connection", "keep-alive");
    //设置请求连接超时时间为5秒
    params.setConnectionManagerTimeout(5*1000);
    //测试
    params.setSoTimeout(5000);
    client.setParams(params);
    PostMethod method = new PostMethod();
    method.setRequestHeader("Connection", "Keep-Alive");

    2、准备要发送的参数,可能是一个数组

    //设置请求的url
    URI uri = new URI("/epgs/api/setSyncCode",true,"utf-8");
    method.setURI(uri);
    //设置请求的参数(数组)
    NameValuePair[] params = new NameValuePair[] {
                        new NameValuePair("syncCode", syncCode)
                };
    method.setRequestBody(params);
    //设置请求头(防止有时候参数的位数会有问题)
    method.setRequestHeader("Content-Length", String.valueOf(method.getRequestEntity().getContentLength()));  

    3、发送Http请求

    client.executeMethod(method);

    4、获取响应的状态码和响应的数据进行分析并执行下一步的操作

     //请求返回200
    if (method.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
         //获取服务器响应的数据
         String result = method.getResponseBodyAsString();
         if (result.equals("true")) {
    	ret = true;
    	} else {
    		ret = false;
    	}
     }        
    

      

  • 相关阅读:
    leetcode 268. Missing Number
    DBSCAN
    python二维数组初始化
    leetcode 661. Image Smoother
    leetcode 599. Minimum Index Sum of Two Lists
    Python中的sort() key含义
    leetcode 447. Number of Boomerangs
    leetcode 697. Degree of an Array
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(1月3日)
    北京Uber优步司机奖励政策(1月2日)
  • 原文地址:https://www.cnblogs.com/antonyhubei/p/5499201.html
Copyright © 2020-2023  润新知