有几篇帖子指出使用cookie容器。如果我将连接重新用于新的 GET 请求,它就会起作用。但是,我正在执行一个新的 POST 请求,但它不起作用。
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(@"https://www.myurl.com/postmethod");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
httpWebRequest.CookieContainer = cookieContainer;
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = new JavaScriptSerializer().Serialize(new
{
price = _price,
quantity = _quantity,
});
streamWriter.Write(json);
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
cookiecontainer 是从先前成功的 GET 请求中检索到的,我正在为另一个 GET 请求成功重用。然后,这是我的 python 代码,用于正常工作的同一任务:
def __init__(self, cookie):
self.session = requests.Session()
self.base_url = 'www.myurl.com'
self.headers = {
'user-agent': 'blah blah',
'cookie': cookie,
#other necessary headers are provided
}
self.session.headers.update(self.headers)
result = self.session.get('https://www.myurl.com/getmethod').json()['result']
然后,如果我按如下方式执行 POST,它会按预期工作:
def post_request(self, _price, _quantity):
data = {
'price': _price,
'quantity': _quantity,
}
result = self.session.post(self.base_url + '/postmethod', data=data).text
那么,我的 C# 代码中缺少什么?