как поддерживать соединение при использовании httpwebrequest?

Я использую 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


person BumbleBee    schedule 02.11.2010    source источник
comment
Вряд ли вы увидите сообщение об ошибке. Если время ожидания соединения, проверьте файл конфигурации вашего веб-сервера (или сервера J2EE).   -  person exiter2000    schedule 02.11.2010
comment
Ошибка: удаленный сервер возвратил ошибку. (500) Внутренняя ошибка сервера.   -  person BumbleBee    schedule 02.11.2010
comment
Заглянув в стек, я вижу связь: закрыть   -  person BumbleBee    schedule 02.11.2010


Ответы (2)


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

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

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

person feroze    schedule 02.11.2010

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

Ниже из tomcat web.xml

<session-config>
    <session-timeout>30</session-timeout>
</session-config>
person exiter2000    schedule 02.11.2010
comment
Я пытаюсь использовать веб-сервис из своего приложения Windows. - person BumbleBee; 02.11.2010
comment
Я не уверен, как установить тайм-аут сеанса на веб-сервере - person BumbleBee; 02.11.2010