先说一下应用场景:
在我的web应用中业务逻辑处理层需要请求另外一个web应用中的一个servlet,根据该servlet的返回结果来进行我下一步的业务处理
在这我们用到了HttpURLConnection,先上代码:
//向servlet发送请求,其中test_interface就是servlet在web.xml中配置的url
URL url = new URL("http://127.0.0.1:8080/test/test_interface");
HttpURLConnection http = (HttpURLConnection) url.openConnection();
http.setRequestMethod("POST");
http.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
http.setDoOutput(true);
http.setDoInput(true);
System.setProperty("sun.net.client.defaultConnectTimeout", "30000");// 连接超时30秒
System.setProperty("sun.net.client.defaultReadTimeout", "30000"); // 读取超时30秒
http.connect();
OutputStream os = http.getOutputStream();
//jsonStr就是要传入的参数
os.write(jsonStr.getBytes("UTF-8"));// 传入参数
os.flush();
os.close();
InputStream is = http.getInputStream();
int size = is.available();
byte[] jsonBytes = new byte[size];
is.read(jsonBytes);
String message = new String(jsonBytes, "UTF-8");
//根据服务器端返回来的message来做相应的处理
if(message != null){
HttpServletResponse response = ServletActionContext.getResponse();
try {
response.setContentType("text/html;charset=UTF-8");
PrintWriter writer = response.getWriter();
writer.write(message);
writer.flush();
} catch (IOException e) {
}
}else{
// TODO 错误页面
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
// 获取输入参数,即上面用流形式写进去的jsonStr
InputStream is = request.getInputStream();
// 将接受的参数转成String类型
String acceptJson = IOUtils.toString(is, "utf-8");
//server根据接受的参数进行相关服务的处理返回一个returnStr
String returnStr = aa.getMsg(acceptJson);
//将returnStr 返回给请求端
PrintWriter out = response.getWriter();
response.setContentType("text/xml;charset=UTF-8");
out.println(returnStr);
}
最后我是看过这篇博文: 点击打开链接 进行了我的相关开发,我认为该博文关于HttpURLConnection的解释相当透彻,