我对Vb.Net并不熟悉,但我尝试在现有项目上调整一些内容。我有一个尝试在Vb.Net上实现的cURL。我在这里和其他论坛找到了不同的答案,但这种方式是我设法达到的方式
Private Function SendRequest(uri As Uri, jsonDataBytes As Byte(), contentType As String, method As String) As String
Dim req As WebRequest = WebRequest.Create(uri)
req.ContentType = contentType
req.Method = method
req.ContentLength = jsonDataBytes.Length
Dim stream = req.GetRequestStream()
stream.Write(jsonDataBytes, 0, jsonDataBytes.Length)
stream.Close()
Dim response = req.GetResponse().GetResponseStream()
Dim reader As New IO.StreamReader(response)
Dim res = reader.ReadToEnd()
reader.Close()
response.Close()
Return res
End Function
Dim postData As String = String.Format("text={0}", title)
Dim data = Encoding.UTF8.GetBytes(postData)
Dim uri = New Uri("https://.....")
Dim slackResponse = SendRequest(uri, data, "application/json", "POST")
这是我得到的错误:
Exception Details: System.Net.WebException: The remote server returned an error: (400) Bad Request.
如果我注释掉SendRequest
函数,我在调用时遇到错误,所以我猜它就是那个部分。
无法调试更多。有什么想法吗?
答案 0 :(得分:1)
为了进行更多调试,您需要捕获WebException。 WebExceptions有一个响应对象,可能包含更多信息。
Dim response as WebResponse
Try
response = req.GetResponse().GetResponseStream()
Catch ex As Net.WebException
If ex.Response IsNot Nothing Then
response = ex.Response
End If
End Try
这可能是您的网址参数的问题,但是当请求的json内容出现问题时,许多网站也会返回此类错误。
答案 1 :(得分:0)
我很久以前通过添加解决了这个问题。
request.ContentType = "application/x-www-form-urlencoded"