首页 > 解决方案 > SOAP 请求如果没有 try-catch-exception 直接返回错误 500 而不是 200

问题描述

关于我的情况,我有几个问题:

  1. 如果我注释掉 try-catch-exception,服务器直接返回错误 500,说明遇到内部服务器错误。但是,我目前的回应是
Bad.SecuritySystem.Web.Services.Protocols.SoapException: The security information supplied was not valid. at WebServices.WebServiceController.Execute(HttpContext http_context, Hashtable parameters) at WebServices.Services.one_of_the_method(parameters)   

我认为只有在实现 try-catch-exception 时才会更加友好。所以我的问题是错误 500 是否意味着我的请求未被确认?

  1. 服务器代码 200 是否意味着我的请求已被服务器成功接收,尽管存在凭据或值无效问题?

代码背后:

Try

    Dim Request As WebRequest
    Dim WResponse As WebResponse
    Dim DataStream As Stream
    Dim Reader As StreamReader
    Dim SoapByte() As Byte
    Dim SoapStr As String

    SoapStr = "Pretty sure this SoapStr is valid"

    SoapByte = System.Text.Encoding.UTF8.GetBytes(SoapStr)

    Request = WebRequest.Create("url goes here")
    Request.Headers.Add("SOAPAction", "same to here")

    Request.ContentType = "text/xml; charset=utf-8"
    Request.ContentLength = SoapByte.Length
    Request.Method = "POST"

    DataStream = Request.GetRequestStream()
    DataStream.Write(SoapByte, 0, SoapByte.Length)

    WResponse = Request.GetResponse()
    DataStream = WResponse.GetResponseStream()

    Reader = New StreamReader(DataStream)
    'Dim SD2Request As String = Reader.ReadToEnd()
    'Response.Write(Response)

    DataStream.Close()
    Reader.Close()
    Response.Close()

Catch ex As WebException
    Dim err As String = New System.IO.StreamReader(ex.Response.GetResponseStream()).ReadToEnd()
    Response.Write(err)
    '& "<br/>Status Code: " & Response.StatusCode & " " & Response.StatusDescription)
End Try

在谷歌浏览器中检查网络选项卡的标题时,我上面的代码显示了以下结果:

请求 URL:我的请求 URL
请求方法:GET
状态代码:200
远程地址:IP
Referrer Policy:strict-origin-when-cross-origin

谢谢你。

标签: vb.nethttpsoapwebrequest

解决方案


推荐阅读