zoukankan      html  css  js  c++  java
  • 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;
    	}
     }        
    

      

  • 相关阅读:
    (整理)REHL6.5_Yum安装Reids
    (整理)REHL6.5_安装本地yum
    (转)MSSQLSERVER执行计划详解
    (转)SQLServer_十步优化SQL Server中的数据访问四
    (转)SQLServer_十步优化SQL Server中的数据访问五
    (转)SQLServer_十步优化SQL Server中的数据访问 三
    (转)SQLServer_十步优化SQL Server中的数据访问 二
    (转)SQLServer_十步优化SQL Server中的数据访问一
    (转)EF5+SQLserver2012迁移到EF6+mysql5.5.47
    (整理)MySQL_REHL6.5 MySQL5.5 中文支持问题
  • 原文地址:https://www.cnblogs.com/antonyhubei/p/5499201.html
Copyright © 2011-2022 走看看