簡體   English   中英

將Windows窗體應用程序轉換為Asp Lr控制台應用程序

[英]Convert windows form application to Asp lr console application

我正在使用vs 2017rc,並且存在兼容性問題。 我無法將Windows form doll添加到我的項目中,並且當我嘗試將代碼從win形式轉換為Asp k時遇到問題。 也許我做錯了,但它似乎可以在vs2015上使用。

請我幫忙解決這個問題。 也許我做錯了。 請參見下面的代碼。

using DotNetBrowser;
using DotNetBrowser.WinForms;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using System.Windows.Forms;

namespace GetAjaxResponseBodySample
{
public partial class Form1 : Form
{
    private static List<string> ajaxUrls = new List<string>();
    private WinFormsBrowserView browserView;

    public Form1()
    {
        InitializeComponent();
        browserView = new WinFormsBrowserView();
        browserView.Browser.Context.NetworkService.ResourceHandler = new AjaxResourceHandler();
        browserView.Browser.Context.NetworkService.NetworkDelegate = new AjaxNetworkDelegate();
        Controls.Add(browserView);
        browserView.Browser.LoadURL("http://www.w3schools.com/xml/ajax_examples.asp");
    }

    private class AjaxResourceHandler : ResourceHandler
    {
        public bool CanLoadResource(ResourceParams parameters)
        {
            if (parameters.ResourceType == ResourceType.XHR)
            {
                Debug.WriteLine("Intercepted AJAX request: " + parameters.URL);
                ajaxUrls.Add(parameters.URL);
            }
            return true;
        }
    }

    private class AjaxNetworkDelegate : DefaultNetworkDelegate
    {
        public override void OnDataReceived(DataReceivedParams parameters)
        {
            if (ajaxUrls.Contains(parameters.Url))
            {
                Debug.WriteLine("Captured response for: " + parameters.Url);
                Debug.WriteLine("MimeType = " + parameters.MimeType);
                Debug.WriteLine("Charset = " + parameters.Charset);
                PrintResponseData(parameters.Data);
            }
        }

        private void PrintResponseData(byte[] data) {
            Debug.WriteLine("Data = ");
            var str = Encoding.Default.GetString(data);
            Debug.WriteLine(str);
        }
    }
}

不關心瀏覽器視圖...我已經從Ajax響應正文中獲得了所需的Jason。

可以完全不創建BrowserView地以無頭模式使用Browser。

以下示例代碼可在帶有ASP.NET Core Web應用程序(.NET Framework)或ASP.NET Web應用程序(.NET Framework)的VS2017rc上的Web應用程序中工作。 請考慮到在捕獲響應正文之后有必要處置瀏覽器

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using DotNetBrowser;
using System.Diagnostics;
using System.Text;

namespace WebApplication7.Controllers
{
    public class HomeController : Controller
    {
        private static List<string> ajaxUrls = new List<string>();
        Browser browser;        

        public string Index()
        {
            Init();
            return "Test page";
        }        

        private void Init()
        {
            browser = BrowserFactory.Create();
            browser.Context.NetworkService.ResourceHandler = new AjaxResourceHandler();
            browser.Context.NetworkService.NetworkDelegate = new AjaxNetworkDelegate();

            browser.LoadURL("https://www.w3schools.com/xml/ajax_examples.asp");
        }       

        private class AjaxResourceHandler : ResourceHandler
        {
            public bool CanLoadResource(ResourceParams parameters)
            {
                if (parameters.ResourceType == ResourceType.XHR)
                {
                    Debug.WriteLine("Intercepted AJAX request: " + parameters.URL);
                    ajaxUrls.Add(parameters.URL);
                }
                return true;
            }
        }

        private class AjaxNetworkDelegate : DefaultNetworkDelegate
        {
            public override void OnDataReceived(DataReceivedParams parameters)
            {
                if (ajaxUrls.Contains(parameters.Url))
                {
                    Debug.WriteLine("Captured response for: " + parameters.Url);
                    Debug.WriteLine("MimeType = " + parameters.MimeType);
                    Debug.WriteLine("Charset = " + parameters.Charset);
                    PrintResponseData(parameters.Data);
                }
            }

            private void PrintResponseData(byte[] data)
            {
                Debug.WriteLine("Data = ");
                var str = Encoding.UTF8.GetString(data);
                Debug.WriteLine(str);
            }
        }
    }
}

暫無
暫無

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

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