微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 vb.net 中格式化请求 webrequest 帖子?

如何解决如何在 vb.net 中格式化请求 webrequest 帖子?

尝试使用以下代码向 Netatmo 发布网络请求:

Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq
Imports System.IO
Imports System.Web
Imports System.Net
Imports System.Text


    Sub Main()

        Dim clientID as string = "???"
        Dim clientSecret as string = "???"
        Dim userName as string = "???"
        Dim passWord as string = "???"

        Dim postData As NetatmoData = New NetatmoData()

        postData.grant_type = "password"
        postData.userName = userName
        postData.passWord = passWord
        postData.clientID = clientID
        postData.clientSecret = clientSecret

        dim json as string = JsonConvert.SerializeObject(postData,Newtonsoft.Json.Formatting.Indented)

        'hs.writelog ("Test",json)

        Dim request As WebRequest = WebRequest.Create("https://api.netatmo.com/oauth2/token")
        request.Method = "POST"

        Dim byteArray As Byte() = Encoding.UTF8.GetBytes(json)
        request.ContentType = "application/x-www-form-urlencoded;charset=UTF-8"
        request.ContentLength = byteArray.Length

        Dim dataStream As Stream = request.GetRequestStream()

        dataStream.Write(byteArray,byteArray.Length)
        dataStream.Close()

        Try
            Dim response As WebResponse = request.GetResponse()
            dataStream = response.GetResponseStream()
            Dim reader As New StreamReader(dataStream)
            Dim responseFromServer As String = reader.ReadToEnd()
            reader.Close()
            dataStream.Close()
            response.Close()
            Console.WriteLine(responseFromServer)
        Catch ex As Exception
            Console.WriteLine(ex.message)
        end try

    End Sub

    Class NetatmoData
        public grant_type as string
        public clientID as string 
        public clientSecret as string
        public userName as string
        public passWord as string
    End Class    

但是,我从 Web 服务器收到错误 400,这表明:由于某些被认为是客户端错误(例如,格式错误的请求语法),服务器无法或不会处理请求、无效的请求消息帧或欺骗性的请求路由)。

然而,以下 Python 代码运行良好:

#!/usr/bin/python
import requests,json,time,datetime
def getToken():
    payload = {'grant_type': 'password','username': userName,'password': passWord,'client_id':clientID,'client_secret': clientSecret}

    try:
        response = requests.post("http://api.netatmo.com/oauth2/token",data=payload)
        response.raise_for_status()

    except requests.exceptions.HTTPError as error:
        print(error.response.status_code,error.response.text)

    return response.json();

# Main program
clientID        = "???"
clientSecret    = "???"
userName        = "???"
passWord        = "???"

token = getToken()
print (token)

有什么建议吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。