首页 > 解决方案 > VB.NET JSON POST 请求中的错误 - HTTPWEBREQUEST

问题描述

我正在尝试按以下方式发布 json 请求。

我在最后一行收到错误。最后一行显示错误消息。

Dim myReq As HttpWebRequest
Dim myResp1 As HttpWebResponse

myReq = HttpWebRequest.Create("https://pro.mastersindia.co/oauth/access_token")
myReq.Method = "POST"
myReq.ContentType = "application/json"
myReq.Headers.Add("username", Service_Provider_Username)
myReq.Headers.Add("password", Service_Provider_Password)
myReq.Headers.Add("client_id", client_id)
myReq.Headers.Add("client_secret", client_secret)
myReq.Headers.Add("grant_type", "password")

Dim mystream As Stream = myReq.GetRequestStream
myResp = myReq.GetResponse  ---- here i am getting an error  {"The remote server returned an error: (400) Bad Request."} 

如果我通过 POSTMAN 将相同的 json 发送到相同的 url,那么我会得到响应。但是通过 vb.net 代码,我遇到了上述错误。

我错过了什么或做错了什么吗?

请帮忙。

谢谢

[以下在邮递员中工作,我在 vb.net 中是否遗漏了一些东西] [ 在此处输入图像描述] 1


在此处输入图像描述

标签: jsonvb.net

解决方案


您的 POST 正文是空的,您应该将它们放入正文而不是标题。

有多种方法可以做到这一点,这里是一个例子。

Imports System.Net
Imports System.Text
Imports Newtonsoft.Json

    Public Class JSON_Post
        Public Property username As String
        Public Property password As String
        Public Property client_id As String
        Public Property client_secret As String
        Public Property grant_type As String
    End Class


    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim myReq As HttpWebRequest = HttpWebRequest.Create("https://pro.mastersindia.co/oauth/access_token")
        myReq.Method = "POST"
        myReq.ContentType = "application/json"

        Dim NewData As New JSON_Post
        NewData.username = "Service_Provider_Username"
        NewData.password = "Service_Provider_Password"
        NewData.client_id = "client_id"
        NewData.client_secret = "client_secret"
        NewData.grant_type = "password"

        Dim PostString As String = JsonConvert.SerializeObject(NewData)
        Dim byteArray As Byte() = Encoding.UTF8.GetBytes(PostString)
        myReq.ContentLength = byteArray.Length

        Dim dataStream As Stream = myReq.GetRequestStream()
        dataStream.Write(byteArray, 0, byteArray.Length)
        dataStream.Close() 'sends request

        Dim myResp As HttpWebResponse = myReq.GetResponse()

    End Sub

你的身体看起来像:

{"username":"Service_Provider_Username","password":"Service_Provider_Password","client_id":"client_id","client_secret":"client_secret","grant_type":"password"}

推荐阅读