Как я могу прочитать ответ на веб-запрос, если статус не равен 200?

Мне трудно получить текст ответа на веб-запрос HTTP в vb.net, когда я получаю веб-исключение.

Это код, с которым я это делаю.

Try
            myWebResponse = CType(request.GetResponse(), HttpWebResponse)
            myStreamReader = New StreamReader(myWebResponse.GetResponseStream())

            ResponseText = myStreamReader.ReadToEnd
            If myWebResponse.StatusCode = HttpStatusCode.Accepted Or myWebResponse.StatusCode = 200 Then
                SendResult = True 'Sent 
                SendStatus = 1 'message sent successfully
                Try
                    Integer.TryParse(myWebResponse.Headers("Number-Of-MT-PDU"), num_MT_PDU)
                Catch ex As Exception
                End Try
            Else
                SendStatus = 2 'message processed but not sent successfully
            End If
        Catch e As WebException
            If (e.Status = WebExceptionStatus.ProtocolError) Then
                Dim response As WebResponse = e.Response
                Using (response)
                    Dim httpResponse As HttpWebResponse = CType(response, HttpWebResponse)
                    statusCode = httpResponse.StatusCode
                    Try
                        myStreamReader = New StreamReader(response.GetResponseStream())
                        Using (myStreamReader)
                            ResponseText = myStreamReader.ReadToEnd & "Status Description = " & HttpWebResponse.StatusDescription
                        End Using
                    Catch ex As Exception
                        Logger.LogError(Me, ex)
                    End Try
                End Using

К сожалению, API, с которым я связываюсь, использует в качестве допустимого ответа 404. Если я помещу запрос в браузер, будет отображаться текст сообщения. Я хочу иметь возможность использовать этот текст в своей программе. Я просто не могу используйте код ошибки для определения действий, поскольку я не думаю, что могу отличить действительный ответ 404 от фактической ошибки.

В коде эта строка

myWebResponse = CType(request.GetResponse(), HttpWebResponse)

вызывает исключение.

В исключении я могу получить код 404 и описание, но не поток ответа. Он всегда равен нулю.

Если я получаю ответ 200, я получаю текст в потоке ответа без проблем.

В объекте ответа веб-исключения (в Visual Studios отладчик) Я проверил заголовки и значения объекта и нигде не могу найти текст ответа.Если я вставляю URL-адрес запроса в браузер, я получаю ответ текст обратно, даже если это 404.

Необработанный ответ в fiddler:

HTTP/1.1 404 Not Found Connection: close Content-Type: text/plain; charset=UTF-8 Content-Length: 35 "The response Message"

Есть идеи, как я могу получить «Ответное сообщение» в моей программе? Я должен использовать .Net на сервере.

Спасибо за любую помощь.

7
задан Mark Hurd 18 July 2015 в 02:27
поделиться