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

<servlet>
		<servlet-name>ElectricExpoOrder</servlet-name>
		<servlet-class>com.xwtech.util.ElectricExpoOrder</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>ElectricExpoOrder</servlet-name>
		<url-pattern>/eOrder</url-pattern>
	</servlet-mapping>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值