如何解决如何在 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 举报,一经查实,本站将立刻删除。