HTTPClient调用远程接口

阅读更多

第一步,导入jar包。见附件
第二步,确定是使用post方式还是get方式。建议使用POST方法,使用GET方式,需要自己通过2次编码一次解码来处理中文。如果是post方式。如下。

	public static void main(String[] args) throws Exception {
		//Url调数据的URL
		String url= "http://127.0.0.1:8080/Xu_Huan/httpclienttest.do";
		//使用post方式
		PostMethod postMethod = new PostMethod(url);
		//设置此可以解决中文问题。但是要切记,本文件的字符编码要和服务器类的编码一样,不然要做特殊处理。
		postMethod.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");
		//迭代Map传参数
		StringBuffer connString = new StringBuffer();
		Map map=new HashMap();
		map.put("x1", "许欢");
		map.put("x2", "xu");
		Iterator it=map.entrySet().iterator();
		Entry entry = null;
		int i=0;
		while(it.hasNext()){
			entry = (Entry) it.next();
			//参数加入postMethod
			postMethod.addParameter((String)entry.getKey(), (String)entry.getValue());
		}
		//定义HttpClient传输,调用远程接口
		HttpClient httpClient = new HttpClient();
		//返回码
		int code = httpClient.executeMethod(postMethod);
		if (code == 404) {
			throw new Exception("404");
		} else if (code == 500) {
			throw new Exception("500");
		} else if (code == 200) {
			//成功则返回200,执行如下方法。
			//使用流的方式来读取返回的值
			InputStream resStream = postMethod.getResponseBodyAsStream();
			BufferedReader br = new BufferedReader(new InputStreamReader(resStream));
			StringBuffer resBuffer = new StringBuffer();
			String resTemp = "";
			while ((resTemp = br.readLine()) != null) {
				resBuffer.append(resTemp);
			}
			String response = resBuffer.toString();  
//			System.out.println(response);
			//如下注释的代码,也可以直接读取返回的值,会报警告,假如返回的内容很多的话,会丢失。建议用上面的。
//			System.out.println( postMethod.getResponseBodyAsString());
		}
	}

 

第三步,写服务端代码。

 

package com.xuhuan.util;

import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class Xutest extends HttpServlet {

	

	public void init(ServletConfig config) throws ServletException {
		super.init(config);
	}

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		this.doPost(request, response);
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		exceute(request, response);
	}

	private void exceute(HttpServletRequest request, HttpServletResponse response) {

		try {
			request.setCharacterEncoding("UTF-8");
		} catch (Exception e) {
			e.printStackTrace();
		}
		try {
			String mobile1= request.getParameter("x1");

			String mobile2 = request.getParameter("x2");
			System.out.println(mobile1);
			System.out.println(mobile2);
			String returnValue = "我来看一看中文好用";
			response.setContentType("text/html;charset=UTF-8");
			response.getOutputStream().write(returnValue.getBytes("utf-8"), 0, returnValue.getBytes("utf-8").length);
			response.getOutputStream().flush();
			response.getOutputStream().close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return ;
	
	}
}

 

4配置WEB.xml


		ElectricExpoOrder
		com.xwtech.util.ElectricExpoOrder
	
	
		ElectricExpoOrder
		/eOrder
	

 

 

  • commons-codec-1.3.jar (45.6 KB)
  • 下载次数: 6
  • commons-httpclient-3.0.jar (272.8 KB)
  • 下载次数: 6
  • commons-logging-1.1.jar (51.7 KB)
  • 下载次数: 5

你可能感兴趣的:(httpclient,远程调用接口)