从 Python 向 Wix 发送 POST 请求?
Sending a POST request from Python to Wix?
我目前正在尝试从 python tkinter GUI 向一个 Wix 免费网站发送一个 POST 请求。我已经发送了几个 GET 请求并且成功了。但无论我做什么,POST 请求都会产生 500 内部服务器错误。这是我的wix后端的http-functions.js代码。
export function post_posFunc(request) {
let options = {
"headers":{
"Content-Type":"application/json"
}
};
return request.body.text()
.then((body) =>{
return wixData.insert("vidinfo", JSON.parse(body));
})
.then((results)=> {
options.body={
"inserted":results
};
return created(options)
})
.catch((error) =>{
options.body = {
"error":error
};
return serverError(options)
});
}
在我的 tkinter 应用程序上,我将视频的名称、大小和 class 与用户 ID 一起传递,代码如下
def runPost(a,b,c,d,e,f):
url = 'https://###.wixsite.com/###/_functions/posFunc/'
myobj = {
"vidUserId":a,
"videoName":b,
"videoSize":c,
"videoClass":d
}
z = requests.post(url, data=myobj)
print(json.dumps(data, indent=2, sort_keys=True))
print("done with post")
我已经用 postman 试过了,它成功了。如您所见,vidinfo 中的字段显示在上方。我已经审查了该网站的名称,因为有人告诉我发布私人信息是违反规定的,但如果我被允许 post,请告诉我。我的代码有什么问题?
更新
设法捕获并打印错误。更新了上面的代码并添加了下面的错误
{
"error": {
"errorGroup": "User",
"name": "JsonSyntaxError"
}
}
更新#2
使用 json.dumps 成功了!
找出实际的错误消息可能会有所帮助。在您的 python 脚本中,您只打印状态代码。知道用 .catch((error) => { ... })
捕获并用 options.body = { error: error }
发送的错误响应
可能会给您(和我们)一些关于正在发生的事情的更多线索。
另请注意,发送 'server error' 并不 总是 有意义,即当问题确实出在请求而非服务器端时。了解错误消息(以及可能导致错误的原因)将帮助您发送适当的响应和状态代码。
在不知道任何进一步的错误消息信息的情况下,我想知道您处理请求的方式是否导致了问题。您确定可以使用 python-sent 请求中的 request.body.text()
and/or JSON.parse
来解析请求吗? python 请求模块可能不会像 Postman 那样序列化数据。
希望我说的对您有所帮助。如果您碰巧对上面发布的内容进行了任何更新,我会继续关注。祝你好运!!
更新:
在看到您的响应错误后,我认为您可能没有正确处理请求。如上所述,Postman 可能会以不同于 python 请求的方式序列化对象。
尝试使用 request.post(url, data=json.dumps(data))
。
同样,您确定可以从 request.body.text() 方法中检索数据吗?我不确定正在使用什么 http 框架 server-side,但是如果 request.body.text() 实际上无法 return 任何数据,它可能会将 undefined
传递给您第一个承诺处理程序 .then((body) => { ... })
。由于您的错误是 JsonSyntaxError,因此 JSON.parse
可能实际上无法解析它试图解析的内容,无论是 undefined
还是无效的 JSON 字符串。
我目前正在尝试从 python tkinter GUI 向一个 Wix 免费网站发送一个 POST 请求。我已经发送了几个 GET 请求并且成功了。但无论我做什么,POST 请求都会产生 500 内部服务器错误。这是我的wix后端的http-functions.js代码。
export function post_posFunc(request) {
let options = {
"headers":{
"Content-Type":"application/json"
}
};
return request.body.text()
.then((body) =>{
return wixData.insert("vidinfo", JSON.parse(body));
})
.then((results)=> {
options.body={
"inserted":results
};
return created(options)
})
.catch((error) =>{
options.body = {
"error":error
};
return serverError(options)
});
}
在我的 tkinter 应用程序上,我将视频的名称、大小和 class 与用户 ID 一起传递,代码如下
def runPost(a,b,c,d,e,f):
url = 'https://###.wixsite.com/###/_functions/posFunc/'
myobj = {
"vidUserId":a,
"videoName":b,
"videoSize":c,
"videoClass":d
}
z = requests.post(url, data=myobj)
print(json.dumps(data, indent=2, sort_keys=True))
print("done with post")
我已经用 postman 试过了,它成功了。如您所见,vidinfo 中的字段显示在上方。我已经审查了该网站的名称,因为有人告诉我发布私人信息是违反规定的,但如果我被允许 post,请告诉我。我的代码有什么问题?
更新
设法捕获并打印错误。更新了上面的代码并添加了下面的错误
{
"error": {
"errorGroup": "User",
"name": "JsonSyntaxError"
}
}
更新#2
使用 json.dumps 成功了!
找出实际的错误消息可能会有所帮助。在您的 python 脚本中,您只打印状态代码。知道用 .catch((error) => { ... })
捕获并用 options.body = { error: error }
发送的错误响应
可能会给您(和我们)一些关于正在发生的事情的更多线索。
另请注意,发送 'server error' 并不 总是 有意义,即当问题确实出在请求而非服务器端时。了解错误消息(以及可能导致错误的原因)将帮助您发送适当的响应和状态代码。
在不知道任何进一步的错误消息信息的情况下,我想知道您处理请求的方式是否导致了问题。您确定可以使用 python-sent 请求中的 request.body.text()
and/or JSON.parse
来解析请求吗? python 请求模块可能不会像 Postman 那样序列化数据。
希望我说的对您有所帮助。如果您碰巧对上面发布的内容进行了任何更新,我会继续关注。祝你好运!!
更新:
在看到您的响应错误后,我认为您可能没有正确处理请求。如上所述,Postman 可能会以不同于 python 请求的方式序列化对象。
尝试使用 request.post(url, data=json.dumps(data))
。
同样,您确定可以从 request.body.text() 方法中检索数据吗?我不确定正在使用什么 http 框架 server-side,但是如果 request.body.text() 实际上无法 return 任何数据,它可能会将 undefined
传递给您第一个承诺处理程序 .then((body) => { ... })
。由于您的错误是 JsonSyntaxError,因此 JSON.parse
可能实际上无法解析它试图解析的内容,无论是 undefined
还是无效的 JSON 字符串。