zoukankan      html  css  js  c++  java
  • HttpClient 的使用

    应用场合,项目在做数据通信时,开始使用的是socket 做数据通信,最后搞了半天又说socket 通信对外不能提供服务,

    需要做一个代理,然后就用到了HttpClient 。

     1.把请求数据使用httpClient 发送到某一个servlet.

     2.然后在servlet 使用socket 进行转发。达到目的。

    代码如下: 最后一个参数是http client 请求url 报错时, 三次请求url

    	/** 把报文结构发送到服务器端 post */
    	public HttpMethod getPostMethod(String ip, String port, String result) {
    		String url = "http://" + HttpClientUtil.localIP() + ":"
    				+ HttpClientUtil.localPort() + "/httpclienttest/client";
    		PostMethod postMethod = new PostMethod(url);
    		postMethod.addParameter("ip", ip);
    		postMethod.addParameter("port", port);
    		postMethod.addParameter("result", result);
    		postMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
    				new DefaultHttpMethodRetryHandler(RETRY_COUNT, SENT_RETRY));
    		return postMethod;
    	}



      

    以下是服务器端 servlet 转发代码

     

    web.xml配置

     

    SocketUtil.java

     

    SocketUtil.java 最终改成以下方式 在服务器发送过一的数据时,有固定的报文长度。

    public class SocketUtil {
    	private static Socket socket = null;
        /**获取一个socket 连接*/
    	public static Socket getSocket(String ip,int port) {
    		try {
    			socket = new Socket(ip,port);
    		} catch (UnknownHostException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		return socket;
    	}
    
    	/**
    	 *  发送请求报文 
    	 *  注:不可以关闭流 否则会关闭对应的socket
    	 */
    	public static void send(Socket socket, byte[] msg) {
    	   DataOutputStream out=null;
    		try {
    			out = new DataOutputStream((socket.getOutputStream()));
    			out.write(msg);
    			out.flush();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    
    	/**
    	 *  接收服务器返回的报文
    	 *  注:不可以关闭流 否则会关闭对应的socket 
    	 */
    	public static byte [] incept(Socket socket) {
    		byte [] head = new byte[4];
    		byte [] body=null;
    		try {
    			BufferedInputStream bufIn = new BufferedInputStream(socket.getInputStream());
    			bufIn.read(head);
    			int len1 = Integer.parseInt(new String(head));
    			body = new byte[len1];
    			bufIn.read(body);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		  return body;
    	}
    	
    }
    


    httpClient 使用的jar包如下

  • 相关阅读:
    eclipse web项目转maven项目
    spark作业
    大数据学习——spark-steaming学习
    大数据学习——sparkSql对接hive
    大数据学习——sparkSql对接mysql
    大数据学习——sparkSql
    大数据学习——spark运营案例
    大数据学习——spark笔记
    大数据学习——sparkRDD
    python面试题
  • 原文地址:https://www.cnblogs.com/java20130726/p/3218377.html
Copyright © 2011-2022 走看看