json格式化与cefsharp简单使用

{
  "details": {
    "threeds2.fingerprint": "123"
  },
  "paymentData": "456"
}

jobj.SelectToken("details.['threeds2.fingerprint']")).Value<string>();

CefSettings settings = new CefSettings();
settings.Locale = "zh-CN";
settings.AcceptLanguageList = "zh-CN";
settings.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36";
Cef.Initialize(settings);

this.chromiumWebBrowser1.RequestHandler = new MyBasicRequestHandler();

this.chromiumWebBrowser1.Load("https://ditu.sossss.com/");

 

json格式化与cefsharp简单使用
    public class MyCustomResourceRequestHandler : CefSharp.Handler.ResourceRequestHandler
    {
        private readonly System.IO.MemoryStream memoryStream = new System.IO.MemoryStream();


        public delegate void MyInvoke(string str1);


        protected override IResponseFilter GetResourceResponseFilter(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response)
        {
            return new CefSharp.ResponseFilter.StreamResponseFilter(memoryStream);
        }

        protected override void OnResourceLoadComplete(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response, UrlRequestStatus status, long receivedContentLength)
        {
            //You can now get the data from the stream
            var bytes = memoryStream.ToArray();

            if (response.Charset == "utf-8")
            {
                var input = System.Text.Encoding.UTF8.GetString(bytes);
                if (input.IndexOf("bounds") == -1)
                {
                    return;
                }
                string pattern = @"\sjQuery\d+_\d+\(";
                string val1 = Regex.Replace(input, pattern, "").Replace("✱", "\"");
                val1 = val1.Substring(0, val1.LastIndexOf(");"));
                JObject joResponse = JObject.Parse(val1);

                var obj = joResponse.SelectToken("poi.['bounds']");
                if (obj == null)
                {
                    return;
                }
                SystemHandler.Instance.Bounds = joResponse["poi"]["bounds"].ToString();
                SystemHandler.Instance.Address = joResponse["poi"]["address"].ToString();
                SystemHandler.Instance.Adcode = joResponse["poi"]["adcode"].ToString();
                SystemHandler.Instance.Name = joResponse["poi"]["name"].ToString();
            }
            else
            {
                //Deal with different encoding here
            }
        }

        private void create_polygon(string bounds2)
        {
            IWorkspaceEdit pWspEdit = SystemHandler.Instance.Workspace as IWorkspaceEdit;
            pWspEdit.StartEditing(false);
            //pWspEdit.StartEditOperation();

            var bounds = "32.393310,119.410623;32.393336,119.411476;32.396008,119.411320;32.395951,119.410533;32.396208,119.410493;32.396047,119.408827;32.394279,119.409105;32.394361,119.409721;32.394212,119.409738;32.394324,119.410487;32.393310,119.410623";
            IPointCollection pointCollection = new MultipointClass();
            var pts = bounds.Split(';');
            for (int i = 0; i < pts.Length - 1; i++)
            {
                var arr = pts[i].Split(',');
                var x = Convert.ToDouble(arr[1]);
                var y = Convert.ToDouble(arr[0]);
                var pPoint = new ESRI.ArcGIS.Geometry.Point();
                pPoint.PutCoords(x, y);
                pointCollection.AddPoint(pPoint, Type.Missing, Type.Missing);
            }

            var poly = Utilities.CreatePolygonByPoints(pointCollection);
            ITopologicalOperator ptopo = poly as ITopologicalOperator;
            ptopo.Simplify();
            var fea = SystemHandler.Instance.CourtLayer.FeatureClass.CreateFeature();
            fea.Shape = poly;
            fea.set_Value(fea.Fields.FindField("Name"), "aaaa");
            fea.Store();

            //pWspEdit.StopEditOperation();
            pWspEdit.StopEditing(true);


            Utilities.PanTo(fea, SystemHandler.Instance.ActiveView);
            SystemHandler.Instance.ActiveView.Refresh();
            MessageBox.Show("OK");
        }
    }

    public class MyBasicRequestHandler : CefSharp.Handler.RequestHandler
    {
        protected override IResourceRequestHandler GetResourceRequestHandler(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool isNavigation, bool isDownload, string requestInitiator, ref bool disableDefaultHandling)
        {
            //Only intercept specific Url's
            if (request.Url.Contains("restapi.map.so.com/newapi"))
            {
                return new MyCustomResourceRequestHandler();
            }
            //Default behaviour, url will be loaded normally.
            return null;
        }

    }
View Code

 

上一篇:C# CefSharp 新版本(83 以后版本) 如何在js中直接调用c#类


下一篇:基于CefSharp开发(一)开发什么?没想好