Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Python向Wix发送POST请求?_Python_Post_Postman_Velo - Fatal编程技术网

从Python向Wix发送POST请求?

从Python向Wix发送POST请求?,python,post,postman,velo,Python,Post,Postman,Velo,我目前正在尝试从python tkinter GUI向一个wix免费网站发送POST请求。我已经发送了几个GET请求,并且成功了。但不管我做什么,POST请求都会产生500个内部服务器错误。以下是wix后端的http-functions.js代码 export function post_posFunc(request) { let options = { "headers":{ "Content-Type":"appl

我目前正在尝试从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应用程序中,我将视频的名称、大小和类别与用户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")
我已经和邮递员试过了,效果很好。如您所见,vidinfo中的字段显示在上面。我已经审查了该网站的名称,因为有人告诉我,发布私人信息是违反规定的,但如果允许我发布,请务必让我知道。我的代码有什么问题

更新

设法捕获并打印错误。更新了上面的代码并在下面添加了错误

{
  "error": {
    "errorGroup": "User",
    "name": "JsonSyntaxError"
  }
}
更新#2


使用json.dumps就成功了

找出实际的错误消息可能会有所帮助。在python脚本中,只打印状态代码。了解使用
.catch((error)=>{…})捕获并使用
options.body={error:error}
可能会给你(和我们)一些更多的线索来了解正在发生的事情

还请注意,发送“服务器错误”并不总是有意义的,也就是说,问题实际上是请求而不是服务器端的问题。了解错误消息(以及可能导致错误的原因)将有助于您发送适当的响应和状态代码

在不知道任何进一步的错误消息信息的情况下,我想知道您是如何处理该请求的。您确定可以使用python发送的请求中的
request.body.text()和/或
JSON.parse来解析请求吗?python请求模块可能没有像Postman那样序列化数据

希望我所说的能有所帮助。如果您对上面发布的内容进行更新,我将继续关注。祝你好运

更新

在看到您的响应错误后,在我看来,您可能错误地处理了请求。如上所述,Postman序列化对象的方式可能不同于python请求

尝试使用
request.post(url,data=json.dumps(data))


同样,您确定可以从request.body.text()方法检索数据吗?我不确定服务器端正在使用什么http框架,但如果request.body.text()实际上无法返回任何数据,它可能会将
未定义的
传递给第一个promise处理程序
。然后((body)=>{…})
。由于您的错误是一个JsonSyntaxError,因此很可能
JSON.parse
无法实际解析它试图解析的内容,无论是
未定义的
还是无效的JSON字符串。

我尝试了print print(z.JSON()),但它会打印('error':{}),您有进一步访问服务器端代码的权限吗?您是否能够深入挖掘即将进入的请求对象?另外,您是否能够看到数据是否正在插入,以及在尝试发送响应时是否发生了服务器错误?一定有办法找到更多关于发生了什么的信息。在这一点上,我能给出的任何建议都只是猜测。我已经发现了错误,并用错误消息再次更新了帖子@我更新了上面的答案。希望能帮上忙!使用json.dumps非常有效!非常感谢你,布拉德!