使用vb.net发送POST请求时出现400个错误请求错误

使用vb.net发送POST请求时出现400个错误请求错误,vb.net,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(ur

我对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")
这就是我得到的错误:

异常详细信息:System.Net.WebException:远程服务器返回错误:(400)请求错误。

如果我注释掉了
SendRequest
函数,我在调用该函数时出错,因此我猜它就在这一部分


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

为了进行更多的调试,您需要捕获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

这可能是URL参数的问题,但当请求的json内容出现问题时,许多站点也会返回此类错误

我很久以前就通过添加解决了这个问题

request.ContentType = "application/x-www-form-urlencoded"


您没有正确地形成您的请求。检查请求的参数和标题,根据url的需要进行相应的更正。