Cefsharpchromewebbrowser中带有url的后置数据参数

问题描述 投票:0回答:1

我正在使用Cefsharp库在c#Windows窗体应用程序中使用Web界面。我可以使用以下代码在浏览器中加载标签页:>

        Cef.EnableHighDPISupport();
        CefSettings settings = new CefSettings();         
        Cef.Initialize(settings);            
        chromeBrowser = new ChromiumWebBrowser("http://localhost/myproject/login.php"); 
        tab_web.Controls.Add(chromeBrowser);

但是我无法将登录凭据发布到页面上(方法是POST),因此我可以注册会话,并且用户可以直接从应用程序访问其个人资料。更新

public partial class Form1 : Form
{
    public void InitializeChromium()
    {
        Cef.EnableHighDPISupport();
        CefSettings settings = new CefSettings();
        settings.RemoteDebuggingPort = 8088;
        Cef.Initialize(settings);
        ChromiumWebBrowser chromeBrowser = new ChromiumWebBrowser("http://localhost/test.php");
        chromeBrowser.RequestHandler = new CustomRequestHandler();
        tab_web.Controls.Add(chromeBrowser);
        chromeBrowser.Dock = DockStyle.Fill;    
    }
public Form1()
    {
        InitializeComponent();      
         InitializeChromium();
     }
    public  void load_browser()
    {
        ChromiumWebBrowser chromeBrowser = new ChromiumWebBrowser();
        byte[] request = Encoding.ASCII.GetBytes("data1=sssss&data2=sssss");
        PostTest.Navigate( chromeBrowser, "http://localhost/test.php", request, "application/x-www-form-urlencoded");
        tab_gis.Controls.Add(chromeBrowser);
    }
}
public class CustomRequestHandler : CefSharp.Handler.RequestHandler
{
    protected override IResourceRequestHandler GetResourceRequestHandler(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool isNavigation, bool isDownload, string requestInitiator, ref bool disableDefaultHandling)
    {
        if (request.Url == "http://localhost/test.php")
        {
            return new CustomResourceRequestHandler();
        }
        return null;
    }
}
public class CustomResourceRequestHandler : CefSharp.Handler.ResourceRequestHandler
{
    protected override CefReturnValue OnBeforeResourceLoad(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback)
    {
        var postData = new PostData();
        MessageBox.Show("HHHH");
        postData.AddData("test=123&data2=456");
        request.Method = "POST";
        request.PostData = postData;
        return CefReturnValue.Continue;
    }
}

来自httpbin的回复的屏幕截图如附件In this the data posted is embedded in the data array enter image description here

同时提交表单数据应如下the username and password data is attached to the form array

我将内容类型更改为multipart / form-data,文本,xml等。没有任何帮助。

我正在使用Cefsharp库在c#Windows窗体应用程序中使用Web界面。我可以使用以下代码Cef.EnableHighDPISupport()在浏览器中加载我的标签页; ...

c# winforms cefsharp chromium-embedded
1个回答
0
投票

贷方Amaitland

© www.soinside.com 2019 - 2024. All rights reserved.