使用vb.net发送POST请求会产生400错误的请求错误

时间:2017-12-07 14:09:04

标签: vb.net

我对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函数,我在调用时遇到错误,所以我猜它就是那个部分。

无法调试更多。有什么想法吗?

2 个答案:

答案 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"