HttpClient网络接口交互
2016-10-05 22:58
387 查看
在我之前的工作经历中有使用HttpClient直接进行的网络数据的传输,然后在这里我就将这个的过程以及相关的代码记录一下以防之后可能会使用到。
在这里我们简单的记录使用Httpclient进行接口的服务提供以及服务调用的两个方面的过程
在使用Httpclient进行数据交互的时候服务端的要求比较简单,一个servlet即可,在其中的部分数据的获取可能存在某些特殊的步骤,但是总体来说还是一个简单的servlet.
我们这就直接创建工程以及servlet(详细过程掠过)
具体的服务类的代码如下
然后我们将我们这个servlet在web.xml里面注册一下
然后我们直接启动Tomcat就直接能够看到我们的结果了
新建一个java工程,然后写一个测试使用的类
package localhost.webserviceTest.test;
import java.io.InterruptedIOException;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpClientParams;
import org.junit.Test;
public class Httptest {
@Test
public void communicate() throws Exception {
byte[] bufSource = null;
String serviceUrl = "";
// HTTPConnection connection = null;
PostMethod method = null;
try {
serviceUrl = "http://localhost:8080/HttpServicePro/test/x";
String strSend = "zhengfang.sun requesting";
//新建连接类
HttpClient client = new HttpClient();
//新建连接属性类
HttpClientParams clientParams = new HttpClientParams();
int soTimeout = 1000;// 返回超时时间
int connectionManagerTimeout = 1000;// 连接超时时间
//设置各个属性
clientParams.setSoTimeout(soTimeout);
clientParams.setConnectionManagerTimeout(connectionManagerTimeout);
clientParams.setContentCharset("GBK");
client.setParams(clientParams);
client.getHttpConnectionManager().getParams().setConnectionTimeout(connectionManagerTimeout);
method = new PostMethod(serviceUrl);
//在这里我们将我们的请求信息(一般来说是XML或者是JSON的报文)放入到PostMethod中
method.setRequestBody(strSend);
//设置调用时候的头信息
method.setRequestHeader("Content-type", "text/xml; charset=GBK");
//执行调用
int status = client.executeMethod(method);
} catch (Exception e1) {
throw new Exception(" 系统连接失败! ", new InterruptedIOException());
}
// 取得接受返回消息
bufSource = method.getResponseBody();
System.out.println("response ===== "+new String(bufSource,"GBK"));
method.releaseConnection();
}
}
然后我们就能通过调用我们之前的那个servlet进行简单的测试了
在这里我们简单的记录使用Httpclient进行接口的服务提供以及服务调用的两个方面的过程
服务端
我们这就直接创建工程以及servlet(详细过程掠过)
具体的服务类的代码如下
package httpTest; import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class service extends HttpServlet { public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("xxxxxxxxxxxxxxxxxxxxxxx"); try { //准备存放数据的byte数组 byte[] bufSource = null; // 获取到输入流 InputStream ins = request.getInputStream(); //准备缓冲读取流 BufferedInputStream inStream = new BufferedInputStream(ins); //准备缓冲输出流 ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); byte[] b = new byte[1024]; int read = 0; //每次读取1024进行转存 while ((read = inStream.read(b)) > 0) { byteOut.write(b, 0, read); } //写入到数组中 bufSource = byteOut.toByteArray(); //关闭流 byteOut.close(); inStream.close(); ins.close(); //流转字符串 字符集自选 String strRequest = new String(bufSource, "GBK"); System.out.println("strRequest = "+strRequest); try { //获取输出流 ServletOutputStream out = response.getOutputStream(); response.setContentType("text/plain:charset=GBK"); response.addHeader("Content-Disposition", "inline; filename=\"temp.xml\""); response.reset(); out.print(" zhengfang.sun response"); out.flush(); } catch (Exception ie) { throw ie; } finally { } } catch (Exception e) { } } }
然后我们将我们这个servlet在web.xml里面注册一下
<servlet> <servlet-name>test</servlet-name> <servlet-class>httpTest.service</servlet-class> </servlet> <servlet-mapping> <servlet-name>test</servlet-name> <url-pattern>/test/*</url-pattern> </servlet-mapping>
然后我们直接启动Tomcat就直接能够看到我们的结果了
客户端
我们有了服务端关键还是需要能够在其他应用中调用到这个服务才行,在服务端的例子中我们就简单的使用一个java工程来进行网络接口的调用,方便我们能够直观的看到我们的结果新建一个java工程,然后写一个测试使用的类
package localhost.webserviceTest.test;
import java.io.InterruptedIOException;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpClientParams;
import org.junit.Test;
public class Httptest {
@Test
public void communicate() throws Exception {
byte[] bufSource = null;
String serviceUrl = "";
// HTTPConnection connection = null;
PostMethod method = null;
try {
serviceUrl = "http://localhost:8080/HttpServicePro/test/x";
String strSend = "zhengfang.sun requesting";
//新建连接类
HttpClient client = new HttpClient();
//新建连接属性类
HttpClientParams clientParams = new HttpClientParams();
int soTimeout = 1000;// 返回超时时间
int connectionManagerTimeout = 1000;// 连接超时时间
//设置各个属性
clientParams.setSoTimeout(soTimeout);
clientParams.setConnectionManagerTimeout(connectionManagerTimeout);
clientParams.setContentCharset("GBK");
client.setParams(clientParams);
client.getHttpConnectionManager().getParams().setConnectionTimeout(connectionManagerTimeout);
method = new PostMethod(serviceUrl);
//在这里我们将我们的请求信息(一般来说是XML或者是JSON的报文)放入到PostMethod中
method.setRequestBody(strSend);
//设置调用时候的头信息
method.setRequestHeader("Content-type", "text/xml; charset=GBK");
//执行调用
int status = client.executeMethod(method);
} catch (Exception e1) {
throw new Exception(" 系统连接失败! ", new InterruptedIOException());
}
// 取得接受返回消息
bufSource = method.getResponseBody();
System.out.println("response ===== "+new String(bufSource,"GBK"));
method.releaseConnection();
}
}
然后我们就能通过调用我们之前的那个servlet进行简单的测试了
相关文章推荐
- Android Asynchronous Http Client-Android异步网络请求客户端接口
- Android Asynchronous Http Client-Android异步网络请求客户端接口 .
- Android Asynchronous Http Client-Android异步网络请求客户端接口
- Android Asynchronous Http Client-Android异步网络请求客户端接口
- HttpClient-----2、使用HTTP的POST方式与网络交互通信
- 【COCOS2DX-LUA 脚本开发之八】不用CCHttpClient而转用quick-cocos2d-x或cocos2dx-LuaProxy的Lua框架实现Lua-Http网络交互!
- android 基础 网络交互 HttpClient HttpUrlConnection
- HttpClientUtil(交互三方接口)
- 【COCOS2DX-LUA 脚本开发之八】不用CCHttpClient而转用quick-cocos2d-x或cocos2dx-LuaProxy的Lua框架实现Lua-Http网络交互!
- Android Asynchronous Http Client-Android异步网络请求客户端接口
- Android Asynchronous Http Client-Android异步网络请求客户端接口
- android 基础 网络交互 HttpClient
- Android Asynchronous Http Client-Android异步网络请求客户端接口
- Android Asynchronous Http Client-Android异步网络请求客户端接口
- Android Asynchronous Http Client-Android异步网络请求客户端接口(转)
- Android Asynchronous Http Client-Android异步网络请求客户端接口
- lua教程八----不用CCHttpClient而转用quick-cocos2d-x或cocos2dx-LuaProxy的Lua框架实现Lua-Http网络交互!
- Android Asynchronous Http Client-Android异步网络请求客户端接口
- Android网络(3):HttpClient作客户端,Tomcat Servlet作服务器的交互示例
- Android网络(3):HttpClient作客户端,Tomcat Servlet作服务器的交互示例