我有一些C#代码执行以下发布请求:
string postData = newFormUrlEncodedContent(params).ReadAsStringAsync().Result;
var postContent = new StringContent(postData, UTF8Encoding.UTF8, "application/x-www-form-urlencoded");
var responseMessage = httpClient.PostAsync(url, postContent).Result;
我想使用Requests库在Python中执行等效操作。这就是我所拥有的:
headers = {'content-type':'application/x-www-form-urlencoded'}
postContent = requests.post(url, params=params, headers=headers, cookies=previousResponse.cookies)
但是Python代码的postContent.status_code
是404,而C#请求返回200.由于我通过一些正则表达式匹配来检索这些参数,因此可能存在错误。先前的请求,但似乎有效。
编辑:我认为设置params参数是针对获取请求,而不是发布请求。我也相信Requests
takes care of form encoding:
通常,您希望发送一些表单编码数据 - 非常类似于HTML表单。为此,只需将字典传递给data参数即可。您的请求发布后,您的数据字典将自动进行表单编码
所以现在我有:
postContent = requests.post(url, data = params, cookies = previousResponse.cookies)
现在postContent.status_code == 500
。堆栈跟踪表明数据在根级别无效。我会调查一下。