Win a copy of Re-engineering Legacy Software this week in the Refactoring forum
or Docker in Action in the Cloud/Virtualization forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

servlet to servlet communication from two different servers

 
prasad hagargi
Ranch Hand
Posts: 36
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
hi there,when i am trying to send a binary data using the below mentioned method in a servlet,i am getting error as ".java.net.ProtocolException: Cannot write output after reading input."
The target URL is a servlet on another server,what can be the reason
public void forwardRequest(String strURL,String strReqPacket){
try{
//get the url to be invoked.

URL url = new URL(strURL);
HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();
urlConn.setDoOutput(true);
urlConn.setUseCaches(false);
urlConn.connect();
//get the response code
String strResponseCode = urlConn.getResponseCode();

//send the binary data of the request
DataOutputStream printout = new DataOutputStream (urlConn.getOutputStream ());
String strContent = strReqPacket;
printout.writeBytes(strContent+"\n");
printout.flush ();
printout.close ();

//read the response
InputStream is = urlConn.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(is));
String response = in.readLine();
System.out.println(response);
while(response!=null){
System.out.println(response);
response = in.readLine();
}

}catch(IOException ioe){
System.out.println("....exception in .CommunicationController.forwardRequest()."+ioe);
}//end of try catch


}//end of method forwardRequest
 
William Brogden
Author and all-around good cowpoke
Rancher
Posts: 13056
6
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Note that getResponseCode involves reading the response before you send the data.

Bill
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic