一、背景
公司有一个需求,就是之前的那个webservice实现的那个模块用http请求的方式实现.jar包下载地址
二、介绍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、准备要发送的参数,可能是一个数组
//设置请求的urlURI 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、获取响应的状态码和响应的数据进行分析并执行下一步的操作
//请求返回200if (method.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { //获取服务器响应的数据 String result = method.getResponseBodyAsString(); if (result.equals("true")) { ret = true; } else { ret = false; } }