httpclientを使用してpostリクエストservletサーバを送信し、servletは別のサーバにデータを求めてhttpclientに返す
7751 ワード
httpclientを使用してpostリクエストをサーバ側に送信し、サーバ側は別のサーバにデータを要求してhttpclientに返す
実現構想.
1、2つのWeb Appilcationプロジェクトを新設し、2つのサーバをサーバ側1とサーバ側2、1つのhttpclientシミュレーションを確立してpost要求を送信する3、サーバ1がhttpclientからの要求を受信した後、別のサーバ2に要求を開始する4、サーバ1がservletからの要求を受信し、サーバ1に応答する.5、サーバ1は、サーバ2が応答するデータをhttclientに送信する
詳細コードは次のとおりです.
httpclientはpost要求をサーバ1コードに送信する:
サーバ1はhttpclientからの要求を受け入れ、データを加工処理し、別のサーバ2を要求する.
サーバ2は、サーバ1からの要求を受け付け、データを返す
実現構想.
1、2つのWeb Appilcationプロジェクトを新設し、2つのサーバをサーバ側1とサーバ側2、1つのhttpclientシミュレーションを確立してpost要求を送信する3、サーバ1がhttpclientからの要求を受信した後、別のサーバ2に要求を開始する4、サーバ1がservletからの要求を受信し、サーバ1に応答する.5、サーバ1は、サーバ2が応答するデータをhttclientに送信する
詳細コードは次のとおりです.
httpclientはpost要求をサーバ1コードに送信する:
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* :
*
* @author BZMing
* @create 2019-08-12 10:44
*/
public class Client {
public static void main(String[] args) throws IOException {
// httpClient
CloseableHttpClient httpClient = HttpClients.createDefault();
//
String url = "http://localhost:8888/demo";
// httpPost
HttpPost httpPost = new HttpPost(url);
//
List params = new ArrayList();
//
params.add(new BasicNameValuePair("msg" , "aaaaaaaaaaaaaaa"));
// httpPost
httpPost.setEntity(new UrlEncodedFormEntity(params));
httpPost.setHeader("Content-Type", "application/json;charset=UTF-8");
//
CloseableHttpResponse response = null;
try {
// ( )Post
response = httpClient.execute(httpPost);
//
HttpEntity responseEntity = response.getEntity();
System.out.println(" :" + response.getStatusLine());
if (responseEntity != null) {
System.out.println(" :" + responseEntity.getContentLength());
System.out.println(" :" + EntityUtils.toString(responseEntity));
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
//
if (httpClient != null) {
httpClient.close();
}
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
サーバ1はhttpclientからの要求を受け入れ、データを加工処理し、別のサーバ2を要求する.
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
/**
* :
*
* @author BZMing
* @create 2019-08-12 9:11
*/
@WebServlet("/demo")
public class servlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("application/json");
resp.setCharacterEncoding("utf-8");
req.setCharacterEncoding("utf-8");
//
BufferedReader reader = req.getReader();
String json = reader.readLine();
System.out.println(json);
reader.close();
/**
* ( json, endjson)
*/
String endjson="demo "+json+" !";
// httpClient
CloseableHttpClient httpClient = HttpClients.createDefault();
//
String url = "http://localhost:6666/test";
// http Post
HttpPost httpPost = new HttpPost(url);
//
List params = new ArrayList();
//
params.add(new BasicNameValuePair("str" , endjson)); // abcdefg endjson
// httpPost
httpPost.setEntity(new UrlEncodedFormEntity(params));
//
httpPost.setHeader("Content-Type", "application/json;charset=UTF-8");
CloseableHttpResponse response = null;
// ( )Post
response = httpClient.execute(httpPost);
//
HttpEntity responseEntity = response.getEntity();
//httpclient ,
String strmsg = EntityUtils.toString(responseEntity);
System.out.println(strmsg);
/**
* strmsg sendmsg
*/
String sendString =" "+strmsg+" ";
// endmsg
PrintWriter out = resp.getWriter();
out.write(sendString);
// 。
if (reader!=null){
reader.close();
}
if (httpClient != null) {
httpClient.close();
}
if (response != null) {
response.close();
}
if (out!=null){
out.close();
}
}
}
サーバ2は、サーバ1からの要求を受け付け、データを返す
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
/**
* :
*
* @author BZMing
* @create 2019-08-12 10:42
*/
@WebServlet("/test")
public class Servlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("application/json");
resp.setCharacterEncoding("UTF-8");
req.setCharacterEncoding("UTF-8");
/**
*
*/
BufferedReader reader = req.getReader();
String json = reader.readLine();
System.out.println(“ ”+json);
reader.close();
/**
*
*/
PrintWriter out = resp.getWriter();
String sendString;
sendString="asdcfe"; //
out.write(sendString);
out.close();
}
}