簡體   English   中英

使用 CefSharp C# 將 POST 數據發送到 URL

[英]Send POST data to URL with CefSharp C#

我正在嘗試研究如何使用 cefsharp 將發布數據直接發送到 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);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM