第一步,导入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>