как сохранить соединение во время использования httpwebrequest? - PullRequest
0 голосов
/ 02 ноября 2010

Я использую httpwebrequest и httpwebresponse для отправки запроса и получения ответа соответственно.По какой-то причине мое соединение закрывается до получения ответа.

Вот мой код:

           WebRequest webRequest = WebRequest.Create (uri);
           webRequest.ContentType = "application/x-www-form-urlencoded";
           webRequest.Method = "POST";
           byte[] bytes = Encoding.ASCII.GetBytes (parameters);
           Stream os = null;
           try
           { // send the Post
              webRequest.ContentLength = bytes.Length;   //Count bytes to send
              os = webRequest.GetRequestStream();
              os.Write (bytes, 0, bytes.Length);         //Send it
           }
           catch (WebException ex)
           {
              MessageBox.Show ( ex.Message, "HttpPost: Request error", 
                 MessageBoxButtons.OK, MessageBoxIcon.Error );
           }

           try
           { // get the response
              WebResponse webResponse = webRequest.GetResponse();
              if (webResponse == null) 
                 { return null; }
              StreamReader sr = new StreamReader (webResponse.GetResponseStream());
              return sr.ReadToEnd ().Trim ();
           }
           catch (WebException ex)
           {
              MessageBox.Show ( ex.Message, "HttpPost: Response error", 
                 MessageBoxButtons.OK, MessageBoxIcon.Error );
           }
           return null;
        }

Ошибка:

alt text

Ответы [ 2 ]

1 голос
/ 02 ноября 2010

По умолчанию, если вы используете протокол HTTP / 1.1, предполагается, что соединение сохраняется, если только сервер не решит указать другое (с заголовком Connection: close).

В вашем случае, у вас есть сервер, отклоняющий запрос с ошибкой 500.Вы должны выяснить, почему это происходит.Вам не нужно беспокоиться о соединении: закройте заголовок на этом этапе.Даже если сервер закрывает соединение, клиент будет корректно обрабатывать это, открывая новое соединение в следующий раз.

Подводя итог, ответ 500 от сервера не связан с закрытием соединения.Это потому, что серверу не нравится отправленный вами запрос.

0 голосов
/ 02 ноября 2010

Если это ошибка тайм-аута сеанса (я не вижу сообщения об ошибке), у вас должен быть параметр конфигурации, как показано ниже, на вашем веб-сервере или сервере J2EE.

Ниже приведен tomcat web.xml

<session-config>
    <session-timeout>30</session-timeout>
</session-config>
...