【发布时间】:2018-03-05 08:39:29
【问题描述】:
所以我尝试使用 HttpClient(和 CloudFlareUtilities)发布表单,并如下所示对其进行初始化:
var handler = new ClearanceHandler {
MaxRetries = 4,
};
var client = new HttpClient(handler);
client.DefaultRequestHeaders.Connection.Clear();
client.DefaultRequestHeaders.ConnectionClose = false;
client.DefaultRequestHeaders.Add("User-Agent",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 " +
"(KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36");
client.Timeout = TimeSpan.FromSeconds(30);
创建客户端成功,没有出现明显问题。但是,我创建了一个如下所示的 POST 请求:
var content = new FormUrlEncodedContent(new[] {
new KeyValuePair<string, string>("login", "username"),
new KeyValuePair<string, string>("password", "pw"),
new KeyValuePair<string, string>("cookie_check", "1"),
new KeyValuePair<string, string>("redirect", "myRedirect"),
new KeyValuePair<string, string>("register", "0"),
new KeyValuePair<string, string>("remember", "1")
});
并发布数据:
var post = client.PostAsync("https://www.mc-market.org/login/login", content).Result.Content.ReadAsStreamAsync().Result;
上述行抛出错误:
内部异常 1: HttpRequestException:将内容复制到流时出错。
内部异常 2: IOException: 读操作失败,见内部异常。
内部异常 3: WinHttpException: 操作已被取消
我可以从这里解释是出了点问题,并且取消了任务,但我自己从来没有取消它。
将错误行限制为
var post = client.PostAsync("https://www.mc-market.org/login/login", content);
给出同样的错误。
我是否可能错误地创建了内容?对我可能去了哪里的一些迹象表示赞赏。
【问题讨论】:
标签: c# http-post dotnet-httpclient