【发布时间】:2019-03-17 17:06:32
【问题描述】:
我正在尝试使用 python 请求库调用 post rest API。当我请求使用邮递员时,我能够得到正确的响应。当我尝试使用 python 请求库调用它时,出现内部服务器错误。
import requests
url = "http://192.188.9.146:9886/getcontext/"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"project\"\r\n\r\ndaynight\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"file\"; filename=\"D:\\Downloads\\GTA.Imaging.Services\\GTA.Imaging.Services.Wrapper.TestApp\\PatternMatchingdata\\Go_To_Setting_Screen.jpg\"\r\nContent-Type: image/jpeg\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'cache-control': "no-cache",
'Postman-Token': "79668e4b-305b-404e-904f-92fc71a12f9f"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
这给了我如下错误
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>500 Internal Server Error</title>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.</p>
当我使用邮递员客户端应用程序时,我得到了预期响应的输出 Postman client 我究竟做错了什么? 任何指导都会非常有帮助,谢谢。
【问题讨论】:
-
使用wireshark从postman和python中抓取出站TCP数据,并进行比较。另外,您是否需要将“项目”和“文件”属性放入不同的表单部分?他们可能会一起出现吗?
-
嗨,你能分享一些用 Wireshark 完成的例子吗?是的,我需要将两个属性放在一起。像这样的
-
多部分请求是
requests模块的内置功能。不要自己滚。阅读如何使用它:docs.python-requests.org/en/master/user/quickstart/… -
如果 192.188.9.146:9886/getcontext 是内部应用程序 - 检查服务器日志。
-
是的,它在本地服务器上运行,由烧瓶组成
标签: python python-3.x rest api post