我需要有关简单POST请求到论坛的帮助。我有正确的数据,当我以cURL命令编写并使用GitBash运行它时,它也可以在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#代码没有任何错误,但是在论坛中不是我的贡献。
感谢答案!
答案 0 :(得分:0)
问题在于HttpClient
忽略了请求Cookie
标头,因为它依赖于HttpClientHandler
及其CookieContainer
。解决方案是告诉HttpClient
您将通过标题设置cookie
var httpClient = new HttpClient(new HttpClientHandler { UseCookies = false }))