首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向表单投递会导致AggregateException

向表单投递会导致AggregateException
EN

Stack Overflow用户
提问于 2018-03-05 08:39:29
回答 1查看 98关注 0票数 0

因此,我试图使用HttpClient (和CloudFlareUtilities)发布一个表单,并初始化它,如下所示:

代码语言:javascript
复制
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);

创建客户端是成功的,没有明显的问题发生。但是,我创建了一个如下所示的帖子请求:

代码语言:javascript
复制
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")
});

并张贴数据:

代码语言:javascript
复制
var post = client.PostAsync("https://www.mc-market.org/login/login", content).Result.Content.ReadAsStreamAsync().Result;

上述行抛出错误:

内部异常1: HttpRequestException:将内容复制到流中时出错。 内部异常2: IOException:读取操作失败,请参阅内部异常。 内部异常3: WinHttpException:操作已被取消

我可以这样理解的是,有些事情出了问题,有些事情取消了任务,但我自己从来没有取消过。

限制错误线为

代码语言:javascript
复制
var post = client.PostAsync("https://www.mc-market.org/login/login", content);

给出同样的错误。

我是否可能错误地创建了内容?我可能去过的地方的一些指示是值得感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-08 02:26:20

为了简单起见,我决定不使用HttpClient

相反,我选择使用PhantomJS & Selenium,它本机支持浏览器中的Javascript (我决定启用Cloudflare旁路)。

然后,我使用它的SendKeys()方法在网站https://www.mc-market.org/login/ (而不是https://www.mc-market.org/login/login)中键入登录字段,然后按下Click()按钮。下面是一个例子;

代码语言:javascript
复制
driver.FindElementById("ctrl_pageLogin_login").SendKeys("NAME");
driver.FindElementById("ctrl_pageLogin_password").SendKeys("PASS");
driver.FindElementById("ctrl_pageLogin_remember").Click();
driver.FindElementByCssSelector("input.button.primary").Click();

结果要简单得多,而且很有魅力。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49106364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档