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

Send POST data to URL with CefSharp C#

我正在研究如何使用 cefsharp 将 post 数据直接发送到 url。 这是我要发送的示例:

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

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

据我所知

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

无法附加 POST 数据,我有办法做到这一点吗?

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

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

例如,您可以创建一个扩展方法来实现与 Microsoft 的 System.Windows.Forms.WebBrowser.Navigate(..., byte[] postData, string additionalHeaders) 等效的方法,例如

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