Проблема отправки двух запросов HTTP 1.1 на сервер в одном сокете - PullRequest
1 голос
/ 16 августа 2011

Я пытаюсь отправить два HTTP-запроса на сервер в одном сокете, я получил ответ на первый запрос, но ничего на второй, Я пытался отправить их, используя тот же или другой буфер чтения и BufferedWriter, но всегда у меня есть только ответ на один запрос, а не оба ответа.

Я слишком сжат временем, пожалуйста, помогите мне и заранее спасибо,

 Socket socket = new Socket(addr, port);
 String strRequest1="myxmlRequest1....";
 //send request 
 wr.write("POST / HTTP/1.1\r\n");
          wr.write("Host: HOST\r\n");
          wr.write("User-Agent: Java\r\n");
          wr.write("Content-Length: " + strRequest1.length() +  "\r\n");
          wr.write("Content-Type: text/xml\r\n");
          wr.write("Connection: Keep_alive\r\n\r\n");
          wr.write(strRequest1 +"\r\n");
          wr.flush();

// Get response
           rd = new BufferedReader(new InputStreamReader(
                      socket.getInputStream(), "UTF8"));

          System.out.println( "BufferedReader rd------------------------------>" + rd);
          System.out.println( "readLine------------------------------>" + rd.toString());
          while ((line = rd.readLine()) != null) {
              System.out.println("output---------->" + output);
              output = output + line + "\n";
          }

          System.out.println("taille response" + output.length());
// Request 2
String s2="myxmlRequest2...";
//send request        
          BufferedWriter wr2 = new BufferedWriter(new OutputStreamWriter(
                   socket.getOutputStream(), "UTF8"));

          System.out.println(s2);
          wr2.write("POST / HTTP/1.1\r\n");
          wr2.write("Host: HOST\r\n");
          wr2.write("User-Agent: Java\r\n");
          wr2.write("Content-Length: " + s2.length() +  "\r\n");
          wr2.write("Content-Type: text/xml\r\n");
          wr2.write("Connection: Close\r\n\r\n");
          wr2.write(s2 + "\r\n");
          wr2.flush(); 

// get response 
          BufferedReader rd2 = new BufferedReader(new InputStreamReader(
                  socket.getInputStream(), "UTF8"));
          output="";
          while ((line = rd2.readLine()) != null) {
              System.out.println("output2---------->" + output);
              output = output + line + "\n";
          }

          System.out.println("s2 response" + output.length()+"s2"+output);

Ответы [ 2 ]

2 голосов
/ 16 августа 2011
      wr.write("Connection: Keep_alive\r\n\r\n");
                                ^---- should be a -

Это Keep-Alive, с чертой, а не с подчеркиванием.

1 голос
/ 18 августа 2011

Я нашел решение этой проблемы. Это было задано и решено здесь:

постоянное соединение Java

...