如何使用HttpClient模拟按钮单击

时间:2017-03-29 12:19:34

标签: c# .net rest web

我正在尝试导航到REST API,但网页所有者已在REST API URL前面插入了一个HTML消息页面。因此,当我向REST API发出请求时,不会返回我请求的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>

我无法直接导航到按钮单击发送给您的页面,因为它不会将您发送到任何地方,它只是确认您单击了该按钮,并关闭了该消息。

我正在尝试模拟此按钮单击。我已经尝试使用System.Windows.Forms.WebBrowser类,但我无法将我的resultContent加载到浏览器中,DocumentText属性保持为空,所以当我尝试调用按钮单击时,我得到一个空引用异常

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");
}

在我看来,网页的所有者通过在REST API调用之前插入HTML消息页面搞砸了一些东西,我已经联系了他们,但是现在和他们可以修复它之间(如果它甚至是他们的问题)我需要一种绕过这个消息框的方法。

1 个答案:

答案 0 :(得分:0)

网站的所有者将问题解决了。我从来没有找到办法做到这一点,但问题已经解决了。