Java 如何将响应从另一个Servlet发送回Servlet

Java 如何将响应从另一个Servlet发送回Servlet,java,servlets,Java,Servlets,我已经编写了两个驻留在不同web服务器上的servlet。在java中使用URL对象从Servlet1(Server1)发送请求。并且能够成功地调用Servlet2(server2)。但我还需要将响应从Servlet2发送回Servlet1…我如何才能实现这一点。请帮帮我 更新 下面是测试的代码 服务1: protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletEx

我已经编写了两个驻留在不同web服务器上的servlet。在java中使用URL对象从Servlet1(Server1)发送请求。并且能够成功地调用Servlet2(server2)。但我还需要将响应从Servlet2发送回Servlet1…我如何才能实现这一点。请帮帮我

更新

下面是测试的代码

服务1:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    System.out.println("Inside MyServlet.");
    String urlParameters = "param1=a&param2=b&param3=c";
    byte[] postData       = urlParameters.getBytes( StandardCharsets.UTF_8 );
    int    postDataLength = postData.length;
    String requestURL = "http://localhost:8080/Application2/Servlet2";
    URL url = new URL( requestURL );
    HttpURLConnection conn= (HttpURLConnection) url.openConnection();
    conn.setDoOutput( true );
    conn.setInstanceFollowRedirects( false );
    conn.setRequestMethod( "POST" );
    conn.setRequestProperty( "Content-Type","application/x-www-form-urlencoded");
    conn.setRequestProperty( "charset", "UTF-8");
    conn.setRequestProperty( "Content-Length", Integer.toString( postDataLength ));
    conn.setUseCaches( false );
    ObjectOutputStream out = new ObjectOutputStream(conn.getOutputStream());
    out.write( postData );
    conn.connect();
 }
服务2:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    System.out.println("Inside CallToAuthorize.Getting Access Token.");
    //do something here and send the response back to Servlet1.
    //Primarily i will be sending String back to Servlet1 for its request.
 }

您的Servlet2(请求接收方)应正常工作:

  • 获取请求参数
  • 和他们做点什么
  • 生成响应
  • 寄回去
一个基本的例子:

public class Servlet2 extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/plain; charset=UTF-8");
        response.getWriter().append("That is my response");
    }

}
您的客户端(请求发送方)应处理响应:

int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
    System.out.println("SUCCESS");
}
else {
    System.out.println("Response Code: " +  responseCode);
}

// may be get the headers
Map<String, List<String>> headers = connection.getHeaderFields();
// do something with them

// read the response body (text, html, json,..)
// do something usefull
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
String line;

while ((line = reader.readLine()) != null) {
    System.out.println(line);
}
int-responseCode=connection.getResponseCode();
if(responseCode==HttpURLConnection.HTTP\u确定){
System.out.println(“成功”);
}
否则{
System.out.println(“响应代码:“+responseCode”);
}
//可能会得到标题
Map headers=connection.getHeaderFields();
//对他们做点什么
//阅读响应正文(文本、html、json等)
//做一些有用的事
BufferedReader=新的BufferedReader(新的InputStreamReader(connection.getInputStream(),“UTF-8”);
弦线;
而((line=reader.readLine())!=null){
系统输出打印项次(行);
}

它与寻呼机重定向有何不同?现在问题已经完全清楚了。一些代码总是有助于更好地理解。这是我需要的最佳答案。。。谢谢你的帮助…我无法提高投票率,因为名声不好