1、背景java
公司有一个需求,就是以前的那个webservice实现的那个模块用http请求的方式实现.jar包下载地址http://files.cnblogs.com/files/antonyhubei/httpclient_jar.zipweb
2、介绍Http请求api
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是一个无状态的协议。服务器
3、如何执行一个Http请求网络
一、建立一个客户端,同时配置响应的参数ide
//建立一个客户端 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");
二、准备要发送的参数,多是一个数组测试
//设置请求的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()));
三、发送Http请求编码
client.executeMethod(method);
四、获取响应的状态码和响应的数据进行分析并执行下一步的操做
//请求返回200 if (method.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { //获取服务器响应的数据 String result = method.getResponseBodyAsString(); if (result.equals("true")) { ret = true; } else { ret = false; } }