Мне трудно получить текст ответа на веб-запрос 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 на сервере.
Спасибо за любую помощь.