我有一个地狱的时间与这个项目,我正在工作,并可能真的需要你的帮助。我会尽量保持这一点的简洁性。
基本上,我有一个UI设置,收集用户信息并将REST API调用发送到我的呼叫控制系统。目前它正在增加线路,干线等方面的工作。
问题是,我希望看到响应的主体从服务器返回。如果我有异常处理,查找OK状态代码并将指示符变为绿色,它将按照我的要求执行。
但是,我无法像在POSTMAN中发送电话时那样,让它给我提供完整的响应。
下面是我在POSTMAN中得到的响应,希望在VB中调用API时返回。我得到了一个Status Code 400和这个在身体里。
{“提示”:“指定模式(2952)已被行所有者使用。”、“详细信息”:“冲突模式”、“代码”:"P0001“、”消息“:"invalid_parameter”}
我已经尝试了每一个组合的搜索标准,我可以在这个网站上找到,似乎没有任何工作为我。我只是不知道我做错了什么。下面是现在如何设置请求/响应的示例。
Try
'//Setup HTTP connection and modify headers
Dim APIRequest As HttpWebRequest = HttpWebRequest.Create("https://" & CMIP.Text & "/api/v1/" & Custom_Endpoint_URL.Text)
APIRequest.Method = "POST"
APIRequest.Headers.Add("Authorization", "Bearer " + LatestToken.Text)
APIRequest.ContentType = "application/json"
'WebCall.Headers.Add("Prefer", "return=representation") 'Only used for testing purposes
'//Prepare JSON request
Dim bytearray As Byte() = System.Text.Encoding.UTF8.GetBytes(Custom_Body.Text)
APIRequest.ContentLength = bytearray.Length
'//Bypass self-signed cert issue
ServicePointManager.ServerCertificateValidationCallback = AddressOf AcceptAllCertifications
'//Load JSON payload into datastream
Dim datastream As Stream = APIRequest.GetRequestStream()
datastream.Write(bytearray, 0, bytearray.Length)
''//Response
Dim response As WebResponse = APIRequest.GetResponse
Dim responsestream As Stream = response.GetResponseStream
Dim responsereader As New StreamReader(responsestream)
Dim responsereadstring As String = responsereader.ReadToEnd
'//Send response to results window
Response_Box.Text = responsereadstring
Catch ex As WebException
End Try我想自己想办法解决这个问题,但我已经做了几天了,我已经到了头撞墙的时候了。
发布于 2018-10-16 23:27:21
当响应的状态代码位于4xx或5xx范围内时,HttpWebRequest.GetResponse方法将抛出一个WebException。根据您问题中的信息,您的API调用将返回状态代码400,因此将触发异常。您的Catch块完全是空的,因此您正在静默地忽略此情况。(这就是为什么你不应该把你的Catch块空着-你永远不会知道什么东西是失败的。)
事实证明,WebException类上有一个Response属性(以及Status),因此您可以从那里获取数据。您只需填写Catch块:
Catch ex As WebException
Dim responsestream As Stream = ex.Response.GetResponseStream
Dim responsereader As New StreamReader(responsestream)
Dim responsereadstring As String = responsereader.ReadToEnd
Response_Box.Text = responsereadstring
End Tryhttps://stackoverflow.com/questions/52844790
复制相似问题