使用CefSharp C#将POST数据发送到URL

时间:2017-02-24 22:22:13

标签: c# cefsharp

我试图找出如何使用cefsharp将帖子数据直接发送到网址。 以下是我要发送的示例:

var values = new Dictionary<string, string>
{
     { "thing1", "hello" },
     { "thing2", "world" }
};
FormUrlEncodedContent content = new FormUrlEncodedContent(values);

哪个会创建thing1=hello&thing2=world 我想使用现有的cefsharp浏览器将此POST数据发送到网址http://example.com/mydata.php

从我所看到的

browser.Load("http://example.com/mydata.php");

无法附加POST数据,我有办法吗?

基本上我需要保留浏览器已经拥有的相同的cookie,所以如果有另一种方法可以做到这一点,例如使用HttpWebRequest和cefsharp ChromiumWebBrowser cookie然后在请求后再次同步它们,那也可以,但我和#39;我不确定这是否可行。

1 个答案:

答案 0 :(得分:5)

您可以通过IFrame界面的LoadRequest方法使用CefSharp发出POST。

例如,你可以创建一个扩展方法,用类似

public void Navigate(this IWebBrowser browser, string url, byte[] postDataBytes, string contentType)
    {
        IFrame frame = browser.GetMainFrame();
        IRequest request = frame.CreateRequest();

        request.Url = url;
        request.Method = "POST";

        request.InitializePostData();
        var element = request.PostData.CreatePostDataElement();
        element.Bytes = postDataBytes;
        request.PostData.AddElement(element);

        NameValueCollection headers = new NameValueCollection();
        headers.Add("Content-Type", contentType );
        request.Headers = headers;

        frame.LoadRequest(request);
    }