Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用HttpClient模拟按钮单击_C#_.net_Rest_Web - Fatal编程技术网

C# 如何使用HttpClient模拟按钮单击

C# 如何使用HttpClient模拟按钮单击,c#,.net,rest,web,C#,.net,Rest,Web,我试图导航到RESTAPI,但是网页的所有者在RESTAPI URL前面插入了一个HTML消息页面。因此,当我向RESTAPI发出请求时,我得到的不是我请求的XML文件,而是一个HTML页面,上面有一些信息性消息,需要单击按钮确认消息 当使用Fiddler检查按钮时,按钮本身不显示onclick事件: <div class="dialog-buttons"> <button id="frmMessages:btnAcknowledge" name="frmMessage

我试图导航到RESTAPI,但是网页的所有者在RESTAPI URL前面插入了一个HTML消息页面。因此,当我向RESTAPI发出请求时,我得到的不是我请求的XML文件,而是一个HTML页面,上面有一些信息性消息,需要单击按钮确认消息

当使用Fiddler检查按钮时,按钮本身不显示onclick事件:

<div class="dialog-buttons">
    <button id="frmMessages:btnAcknowledge" name="frmMessages:btnAcknowledge" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" onclick="" title="Acknowledge and continue" type="submit">
        <span class="ui-button-text ui-c">OK</span>
    </button>
</div>

在我看来,网页的所有者在REST API调用前插入HTML消息页面,搞砸了,我已经就此联系了他们,然而,从现在起到他们能够解决问题的时候,如果这对他们来说甚至是一个问题,我需要一种绕过此消息框的方法。

网站所有者在他们这边解决了这个问题。我一直无法找到解决方法,但问题已经解决。

您是否尝试过doc.WriteresultContent?HttpClient与任何类型的用户界面都没有关联,因此它无法直接模拟任何用户输入事件。我会在浏览器中玩,当点击按钮时,检查是否有任何网络活动,但你会说它不会将你发送到任何地方。如果您在浏览器中刷新页面,是否每次都必须再次单击该按钮?@MihalyBalas关于HttpClient您是对的,这就是我尝试使用WebBrowser类的原因。检查浏览器活动后,我首先被发送到登录页面,然后被重新定向到我的初始请求URL,但在从登录页面返回后,我会收到HTML消息。我联系了负责该页面的IT部门,他们发现了同样的问题,正在调查。在确认消息框后,尝试在浏览器中查看REST webservice时出现403错误。如果我重新加载这个页面,我会得到相同的403错误。如果我重新加载消息页面,我会得到相同的消息框。
handler = new HttpClientHandler();
handler.CookieContainer = cookies;
handler.AllowAutoRedirect = false;

using (var client = new HttpClient(handler)){
    string resultContent = result.Content.ReadAsStringAsync().Result;
    System.Windows.Forms.WebBrowser b = new System.Windows.Forms.WebBrowser();
    b.Navigate("about:blank");
    HtmlDocument doc = b.Document;
    doc.Write(string.Empty);
    b.DocumentText = resultContent;
    var resp = b.Document.GetElementById("frmMessages:btnAcknowledge").InvokeMember("onclick");
}