Отправить данные POST на URL с помощью CefSharp C#
Я пытаюсь понять, как отправить данные поста непосредственно на URL с помощью cefsharp. Вот пример того, что я хочу отправить:
var values = new Dictionary<string, string>
{
{ "thing1", "hello" },
{ "thing2", "world" }
};
FormUrlEncodedContent content = new FormUrlEncodedContent(values);
Который создаст thing1=hello&thing2=world
Я хочу отправить эти данные POST на URL http://example.com/mydata.php
используя существующий браузер с cefsharp.
Из того, что я вижу
browser.Load("http://example.com/mydata.php");
Нет способа прикрепить данные POST, есть ли способ сделать это?
По сути, мне нужно сохранить те же файлы cookie, которые уже есть в браузере, поэтому, если есть другой способ сделать это, например, использовать HttpWebRequest с файлами cookie cefsharp ChromiumWebBrowser, а затем синхронизировать их снова после этого запроса, это также будет работать, но я не уверен, что это возможно.
1 ответ
Вы можете выдать POST с помощью CefSharp через метод LoadRequest интерфейса IFrame.
Например, вы можете создать метод расширения, который реализует эквивалент 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);
}