重新使用 C# httpWebRequest 进行新的 POST 请求

问题描述 投票:0回答:0

有几篇帖子指出使用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# 代码中缺少什么?

python c# json post httpwebrequest
© www.soinside.com 2019 - 2024. All rights reserved.