问题描述
尝试使用以下代码向 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 (将#修改为@)