Re: HTTPWebRequest - GetResponse throws exception

From: Feroze [MSFT] (ferozed_at_online.microsoft.com)
Date: 03/08/04


Date: Mon, 8 Mar 2004 10:48:08 -0800

It is difficult to guess the reason for the exception by just looking at the
code. Your code seems fine. It could be that the server is sending a
malformed response, and HttpWebRequest is choking on it.

Can you get a network sniff of the POST request & response from the server?
That should help figure out the problem.

-- 
Remove "user" from the email address to reply to the author.
This posting is provided "AS IS" with no warranties, and confers no rights
Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm
"Peter Feller" <pfeller@cox.net> wrote in message
news:105e45d7.0403050035.c882b2b@posting.google.com...
> Quick followup:
>
> I have worked on this some more and am now getting a slightly
> different exception.
>
> The Exception Status is: Receive Failure.
> "The underlying connection was closed: An unexpected error occurred on
> a receive."
>
> The stack is the same as below.
>
> I can duplicate this error on three different servers. I wonder if it
> has something to do with the ISAPI filter. It's usings WriteToClient
> to send the data back. It's just really strange that it works using
> the MSXML object. What is the difference between IXMLHTTPRequest and
> HTTPWebRequest?
>
> And, I can successfully retrieve the contents of HTML pages, when I
> update the URI with the additional path info, and of course comment
> out the following three lines of code.
>
>     Dim DataStream As Stream = myReq.GetRequestStream()
>     DataStream.Write(POSTBuffer, 0, POSTBuffer.Length)
>     DataStream.Close()
>
> Then the GetResponse call works!
>
>
>
>
> pfeller@cox.net (Peter Feller) wrote in message
news:<105e45d7.0403041210.68f32897@posting.google.com>...
> > Hello,
> >
> > I am trying to make a HTTP request to a component on a server. In the
> > past, our client applications have used the XMLHTTPRequest object in
> > MSXML to make the call. See ?OLD CODE'. The call is intercepted by an
> > ISAPI filter which forwards the request to the appropriate application
> > server and then responds. This works fine.
> >
> > For our next generation clients, I wanted to make the call using the
> > HTTPWebRequest or WebClient class provided by .NET. I then would no
> > longer have to rely on an unmanaged COM object and have only .NET
> > assemblies in the applications. That way I could take advantage of the
> > .NET deployment options.
> >
> > The problem I am having is that the function I wrote to make the
> > requests (see NEW CODE) does not work. I can create the request object
> > and write the data to the server, but when I call the following line
> > of code I get an exception (see below).
> > Dim resp As HttpWebResponse = CType(myReq.GetResponse(),
> > HttpWebResponse)
> >
> > Following Exception is thrown, where the WebExcpeption.Status =
> > WebExceptionStatus.ServerProtocolViolation
> >
> > The underlying connection was closed: The server committed an HTTP
> > protocol violation.
> >
> >    at System.Net.HttpWebRequest.CheckFinalStatus()
> >    at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult
> > asyncResult)
> >    at System.Net.HttpWebRequest.GetResponse()
> >    at OMNI_Common.MakeCISRequest.MakeWebRequest(String URL, String
> > strRequest, String& strOut) in
> > C:\Projects\OMNI\Frontend\DLL\OMNI_Common\Common
> > Classes\MakeCISRequest.vb:line 258
> >
> >
> >
> > When I enable logging in my ISAPI filter, I see that the request has
> > been processed and the data is being sent back to the client. The
> > problem seems to be that the client can not process the returned data.
> >
> > I have played with the following many properties and the encoding
> > scheme, but can't seem to get anywhere. Besides the ?The underlying
> > connection was closed' error I have also received the 405 error
> > (Invalid Method).
> >
> > Any feedback would be greatly appreciated.
> >
> > -Peter
> >
> >
> > NEW CODE.
> >
> > Public Sub MakeWebRequest(ByVal URL As String, ByVal strRequest As
> > String, ByRef strOut As String)
> >         Try
> >            Dim myReq As HttpWebRequest = CType(WebRequest.Create(URL),
> > HttpWebRequest)
> >            myReq.KeepAlive = True
> >            myReq.Expect = ""
> >            myReq.Accept = "*/*"
> >            myReq.AllowAutoRedirect = True
> >            myReq.Method = "POST"
> >
> >            Dim POSTBuffer() As Byte =
> > System.Text.Encoding.UTF8.GetBytes(strRequest)
> >            myReq.ContentLength = POSTBuffer.Length
> >            myReq.ContentType = "text/xml"
> >            'myReq.AllowWriteStreamBuffering = True
> >            'myReq.SendChunked = True
> >            myReq.Timeout = 10000
> >            myReq.Headers.Add("Request-Type", "ALifeRequest")
> >
> >            Dim DataStream As Stream = myReq.GetRequestStream()
> >            DataStream.Write(POSTBuffer, 0, POSTBuffer.Length)
> >            DataStream.Close()
> >
> >            ?'''''''''''''''''''  THIS LINE CAUSES EXCEPTION
> >            Dim resp As HttpWebResponse = CType(myReq.GetResponse(),
> > HttpWebResponse)
> >            ?''''''''''''''''''''''''''''''
> >            Dim sr As StreamReader = New
> > StreamReader(resp.GetResponseStream())
> >            strOut = sr.ReadToEnd()
> >            sr.Close()
> >
> >         Catch WebExcp As WebException
> >            If (WebExcp.Status = WebExceptionStatus.ProtocolError) Then
> >                 Dim wr As HttpWebResponse = WebExcp.Response
> >                 If (401 = wr.StatusCode) Then
> >                 ElseIf (407 = wr.StatusCode) Then
> >                 End If
> >
> >             End If
> >             Dim wr1 As HttpWebResponse = WebExcp.Response
> >         Finally
> >             If strOut.IndexOf("ERRORS") > -1 Then
> >                 Throw New CCMException(strOut)
> >             End If
> >         End Try
> >
> >     End Sub
> >
> > End Class
> >
> >
> >
> >
> > OLD CODE.
> >
> > HRESULT CSendHTTPRequestThread::Work(CString &xmlOut, CString
> > *strTime)
> > {
> > CString strMethod("CSendHTTPRequestThread::Work");
> >
> > CComVariant varXMLdoc(m_bstrRequest);
> > CComVariant varAsync(m_bAsync);
> > CComVariant varEmpty(L"");
> > MSXML2::IXMLHTTPRequestPtr m_pHTTP = NULL;
> > HRESULT hr = m_pHTTP.CreateInstance("Msxml2.XMLHTTP.4.0");
> > m_pHTTP->open (L"POST", m_bstrURL, varAsync, varEmpty, varEmpty);
> > m_pHTTP->setRequestHeader(L"Content-type", L"text/xml");
> > m_pHTTP->setRequestHeader(L"Request-Type", L"ALifeRequest");
> > m_pHTTP->send (varXMLdoc);
> >
> > m_pHTTP->get_readyState(&lReadyState);
> > if (lReadyState == 4 ) //successful
> > {
> > BSTR bstrXmlDocMaster = NULL;
> > m_pHTTP->get_responseText(&bstrXmlDocMaster);
> > xmlOut = CString (bstrXmlDocMaster,
> > ::SysStringLen(bstrXmlDocMaster));
> > ::SysFreeString (bstrXmlDocMaster);
> > BSTR bstrStat;
> > long lVal;
> > m_pHTTP->get_status(&lVal);
> > m_pHTTP->get_statusText(&bstrStat);
> >
> > return S_OK;
> > }
> > }


Relevant Pages

  • Re: sharepoint error
    ... Server Error in '/Remote' Application. ... Exception Details: System.UnauthorizedAccessException: Access to the path ... granting access rights to the resource to the ASP.NET request identity. ... t context) +97 ...
    (microsoft.public.windows.server.sbs)
  • Re: Security Exception Microsoft .NET Framework Version:2.0.50727.42; ASP.NET Version:2.0.50727.42
    ... by default the asp.net system account does not have network access, ... I am struggling with a website on a W2K3 server which has the actual ... Exception Details: System.Security.SecurityException: Request for the ...
    (microsoft.public.dotnet.framework.aspnet)
  • Re: outlook mobile access broken
    ... then make sure that ASP is enabled on the server. ... the current web request. ... An unhandled exception has occurred. ... Thread account name: NT AUTHORITY\NETWORK SERVICE ...
    (microsoft.public.exchange.admin)
  • RE: Exchange 2007 migration, OWA problem
    ... The curve here is that I am using the old existing server. ... Exception message: There was a problem accessing Active Directory. ... connection, DirectoryRequest request, DirectoryException de, Int32 ... Microsoft.Exchange.Data.Directory.ADSession.ExecuteModificationRequest(ADRawEntry entry, DirectoryRequest request, ADObjectId originalId) ...
    (microsoft.public.exchange.setup)
  • Re: outlook mobile access broken
    ... then make sure that ASP is enabled on the server. ... the current web request. ... An unhandled exception has occurred. ... Thread account name: NT AUTHORITY\NETWORK SERVICE ...
    (microsoft.public.exchange.admin)

Loading