使用StringContent(System.Net.Http)在Python中发布post请求相当于什么

时间:2017-06-08 21:05:17

标签: c# python http python-requests

我有一些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。堆栈跟踪表明数据在根级别无效。我会调查一下。

0 个答案:

没有答案