Python请求/ cURL到C#POST请求

时间:2019-02-05 20:42:08

标签: c# python curl post

我需要有关简单POST请求到论坛的帮助。我有正确的数据,当我以cURL命令编写并使用Gi​​tBash运行它时,它也可以在Python中工作。问题是在C#中不起作用。

我需要您的帮助,因为我不知道如何用C#编写正确的代码。

这是Python代码:

import requests

headers = {
    'Content-type': 'application/x-www-form-urlencoded',
    'Cookie': 'cookie_notice=1'
}

data = 'id=44&typ=0&parent=-1&login=User&password=password&text=test22\ntest33'

response = requests.post('address.php', headers=headers, data=data)

这是一个cURL:

curl 'address.php' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Cookie: cookie_notice=1' -d "id=44&typ=0&parent=-1&login=User&heslo=password&text=test22"

我尝试使用以下命令进行编译:https://curl.olsh.me/

using (var httpClient = new HttpClient())
{
    using (var request = new HttpRequestMessage(new HttpMethod("POST"), "http://address.php/"))
    {
        request.Headers.TryAddWithoutValidation("Cookie", "cookie_notice=1"); 

        request.Content = new StringContent("id=44&typ=0&parent=-1&login=User&heslo=password&text=test22", Encoding.UTF8, "application/x-www-form-urlencoded"); 

        var response = await httpClient.SendAsync(request);
    }
}

程序运行此C#代码没有任何错误,但是在论坛中不是我的贡献。

感谢答案!

1 个答案:

答案 0 :(得分:0)

问题在于HttpClient忽略了请求Cookie标头,因为它依赖于HttpClientHandler及其CookieContainer。解决方案是告诉HttpClient您将通过标题设置cookie

var httpClient = new HttpClient(new HttpClientHandler { UseCookies = false }))