博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
csharp: WebBrowser read baidumap
阅读量:7234 次
发布时间:2019-06-29

本文共 14570 字,大约阅读时间需要 48 分钟。

setpoint.html:

行政区域工具

  用Winform 读取百度地图的经纬度:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Security.Permissions;namespace baidudemo{    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]    [System.Runtime.InteropServices.ComVisibleAttribute(true)]     public partial class Form2 : Form    {        ///         ///         ///         public Form2()        {            InitializeComponent();        }        ///         ///         ///         ///         ///         private void Form2_Load(object sender, EventArgs e)        {            string str_url = Application.StartupPath + "\\baidu\\setpoint.html";            Uri url = new Uri(str_url);            webBrowser1.Url = url;            webBrowser1.ObjectForScripting = this;        }        ///         ///         ///         ///         ///         private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)        {        }        ///         ///         ///         ///         ///         private void button1_Click(object sender, EventArgs e)        {            string tag_lng = webBrowser1.Document.GetElementById("lng").InnerText;            string tag_lat = webBrowser1.Document.GetElementById("lat").InnerText;            this.textBox1.Text = tag_lat;            this.textBox2.Text = tag_lng;        }        ///         ///         ///         ///         ///         private void webBrowser1_LocationChanged(object sender, EventArgs e)        {;        }    }}

  

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Collections;using System.Web;using System.Web.Script.Serialization; //引用System.Web.Extensions using System.Data;using System.IO;using System.Runtime.Serialization;using System.Runtime.Serialization.Json;using System.Runtime.Serialization.Formatters;

  

 

///     ///    ///     public class JsonHelper    {        //对应JSON的singleInfo成员        public string singleInfo = string.Empty;        protected string _error = string.Empty;        protected bool _success = true;        protected long _totalCount = 0;        protected System.Collections.ArrayList arrData = new ArrayList();        protected System.Collections.ArrayList arrDataItem = new ArrayList();        public JsonHelper()        {            //            //TODO: 在此处添加构造函数逻辑            //        }        //对应于JSON的success成员        public bool success        {            get            {                return _success;            }            set            {                //如设置为true则清空error                if (success) _error = string.Empty;                _success = value;            }        }        //对应于JSON的error成员        public string error        {            get            {                return _error;            }            set            {                //如设置error,则自动设置success为false                if (value != "") _success = false;                _error = value;            }        }        public long totlalCount        {            get { return _totalCount; }            set { _totalCount = value; }        }        //重置,每次新生成一个json对象时必须执行该方法        public void Reset()        {            _success = true;            _error = string.Empty;            singleInfo = string.Empty;            arrData.Clear();            arrDataItem.Clear();        }        public void AddItem(string name, string value)    {        arrData.Add("/" + name + "/:" + "/" + value + "/");    }        public void ItemOk()        {            arrData.Add("
"); //返回总记录条数 totlalCount++; } //序列化JSON对象,得到返回的JSON代码 public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("{"); sb.Append("/totalCount/:/" + _totalCount.ToString() + "/,"); sb.Append("/success/:" + _success.ToString().ToLower() + "/,"); sb.Append("/error/:/" + _error.Replace("/", "///") + "/,"); sb.Append("/data/:/["); int index = 0; sb.Append("{"); if (arrData.Count <= 0) { sb.Append("}"); } else { foreach (string val in arrData) { index++; if (val != "
") { sb.Append(val + ","); } else { sb = sb.Replace(",", "", sb.Length - 1, 1); sb.Append("},"); if (index < arrData.Count) { sb.Append("{"); } } } sb = sb.Replace(",", "", sb.Length - 1, 1); sb.Append("]"); } sb.Append("}"); return sb.ToString(); } public string ToSingleString() { StringBuilder sb = new StringBuilder(); sb.Append("{"); sb.Append("success:" + _success.ToString().ToLower() + ","); sb.Append("data:"); int index = 0; sb.Append("{"); if (arrData.Count <= 0) { sb.Append("}"); } else { foreach (string val in arrData) { index++; if (val != "
") { sb.Append(val + ","); } else { sb = sb.Replace(",", "", sb.Length - 1, 1); sb.Append("},"); if (index < arrData.Count) { sb.Append("{"); } } } sb = sb.Replace(",", "", sb.Length - 1, 1); sb.Append(""); } sb.Append("}"); return sb.ToString(); } public static string ObjectToJSON(object obj) { JavaScriptSerializer jss =new JavaScriptSerializer(); try { return jss.Serialize(obj); } catch(Exception ex) { throw new Exception("JSONHelper.ObjectToJSON(): "+ ex.Message); } } public static List
>DataTableToList(DataTable dt) { List
> list=new List
>(); foreach(DataRow dr in dt.Rows) { Dictionary
dic =new Dictionary
(); foreach(DataColumn dc in dt.Columns) { dic.Add(dc.ColumnName, dr[dc.ColumnName]); } list.Add(dic); } return list; } ///
/// /// ///
///
public static Dictionary
>>DataSetToDic(DataSet ds) { Dictionary
>> result =new Dictionary
>>(); foreach(DataTable dt in ds.Tables) result.Add(dt.TableName,DataTableToList(dt)); return result; } ///
/// /// ///
///
public static string DataTableToJSON(DataTable dt) { return ObjectToJSON(DataTableToList(dt)); } ///
/// /// ///
///
///
public static T JSONToObject
(string jsonText) { JavaScriptSerializer jss =new JavaScriptSerializer(); try { return jss.Deserialize
(jsonText); } catch(Exception ex) { throw new Exception("JSONHelper.JSONToObject(): "+ ex.Message); } } ///
/// /// ///
///
public static Dictionary
>>TablesDataFromJSON(string jsonText) { return JSONToObject
>>>(jsonText); } ///
/// /// ///
///
public static Dictionary
DataRowFromJSON(string jsonText) { return JSONToObject
>(jsonText); } public static string ToJsJson(object item)//参数要装换成JSON的对象 { DataContractJsonSerializer serializer = new DataContractJsonSerializer(item.GetType()); using(MemoryStream ms=new MemoryStream()) { serializer.WriteObject(ms, item); StringBuilder sb = new StringBuilder(); sb.Append(Encoding.UTF8.GetString(ms.ToArray())); return sb.ToString(); } } //反序列化 //T指定要序列化的对象,jsonString是JSON字符串变量 public static T FromJsonTo
(string jsonString) { DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString))) { T jsonObject = (T)ser.ReadObject(ms); return jsonObject; } } }

  

///     /// 提供 Http 相关方法。    ///     public class HttpUtils    {        ///         /// 执行HTTP GET请求。        ///         /// 请求地址        /// 请求参数        /// 
HTTP响应
public static string DoGet(string url, IDictionary
parameters) { if (parameters != null && parameters.Count > 0) { if (url.Contains("?")) { url = url + "&" + BuildPostData(parameters); } else { url = url + "?" + BuildPostData(parameters); } } HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); req.ServicePoint.Expect100Continue = false; req.Method = "GET"; req.KeepAlive = true; req.UserAgent = "Test"; req.ContentType = "application/x-www-form-urlencoded;charset=utf-8"; HttpWebResponse rsp = null; try { rsp = (HttpWebResponse)req.GetResponse(); } catch (WebException webEx) { if (webEx.Status == WebExceptionStatus.Timeout) { rsp = null; } } if (rsp != null) { if (rsp.CharacterSet != null) { Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet); return GetResponseAsString(rsp, encoding); } else { return string.Empty; } } else { return string.Empty; } } ///
/// 把响应流转换为文本。 /// ///
响应流对象 ///
编码方式 ///
响应文本
private static string GetResponseAsString(HttpWebResponse rsp, Encoding encoding) { StringBuilder result = new StringBuilder(); Stream stream = null; StreamReader reader = null; try { // 以字符流的方式读取HTTP响应 stream = rsp.GetResponseStream(); reader = new StreamReader(stream, encoding); // 每次读取不大于256个字符,并写入字符串 char[] buffer = new char[256]; int readBytes = 0; while ((readBytes = reader.Read(buffer, 0, buffer.Length)) > 0) { result.Append(buffer, 0, readBytes); } } catch (WebException webEx) { if (webEx.Status == WebExceptionStatus.Timeout) { result = new StringBuilder(); } } finally { // 释放资源 if (reader != null) reader.Close(); if (stream != null) stream.Close(); if (rsp != null) rsp.Close(); } return result.ToString(); } ///
/// 组装普通文本请求参数。 /// ///
Key-Value形式请求参数字典。 ///
URL编码后的请求数据。
private static string BuildPostData(IDictionary
parameters) { StringBuilder postData = new StringBuilder(); bool hasParam = false; IEnumerator
> dem = parameters.GetEnumerator(); while (dem.MoveNext()) { string name = dem.Current.Key; string value = dem.Current.Value; // 忽略参数名或参数值为空的参数 if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(value)) { if (hasParam) { postData.Append("&"); } postData.Append(name); postData.Append("="); postData.Append(Uri.EscapeDataString(value)); hasParam = true; } } return postData.ToString(); } /* GoBack():后退 GoForward():前进 Refresh():刷新 Stop():停止 GoHome():浏览主页 WebBrowser控件的常用属性: Document:获取当前正在浏览的文档 DocumentTitle:获取当前正在浏览的网页标题 StatusText:获取当前状态栏的文本 Url:获取当前正在浏览的网址的Uri ReadyState:获取浏览的状态 WebBrowser控件的常用事件: DocumentTitleChanged, CanGoBackChanged, CanGoForwardChanged, DocumentTitleChanged, ProgressChanged, ProgressChanged */ ///
/// 根据Name获取元素 /// ///
///
///
public HtmlElement GetElement_Name(WebBrowser wb, string Name) { HtmlElement e = wb.Document.All[Name]; return e; } ///
/// 根据Id获取元素 /// ///
///
///
public HtmlElement GetElement_Id(WebBrowser wb, string id) { HtmlElement e = wb.Document.GetElementById(id); return e; } ///
/// 根据Index获取元素 /// ///
///
///
public HtmlElement GetElement_Index(WebBrowser wb, int index) { HtmlElement e = wb.Document.All[index]; return e; } ///
/// 获取form表单名name,返回表单 /// ///
///
///
public HtmlElement GetElement_Form(WebBrowser wb, string form_name) { HtmlElement e = wb.Document.Forms[form_name]; return e; } ///
/// 设置元素value属性的值 /// ///
///
public void Write_value(HtmlElement e, string value) { e.SetAttribute("value", value); } ///
/// 执行元素的方法,如:click,submit(需Form表单名)等 /// ///
///
public void Btn_click(HtmlElement e, string s) { e.InvokeMember(s); } }

  工作流程图:

https://jsplumbtoolkit.com/demos/toolkit/flowchart-builder/index.html

转载地址:http://qclfm.baihongyu.com/

你可能感兴趣的文章
无所遁形
查看>>
动态规划(2)——01背包
查看>>
使用递归遍历并转换树形数据(以 TypeScript 为例)
查看>>
css制作动画
查看>>
大型分布式网站的思考(一):大型网站发展历程
查看>>
一些ES6新姿势
查看>>
Serverless 风格微服务的持续交付(上):架构案例
查看>>
SpringCloud(第 047 篇)注解式Async配置异步任务
查看>>
微服务指南走北(五):什么样的服务才可以说是微服务?
查看>>
在virtualbox 下安装ubuntu 并配置共享文件夹
查看>>
cp、mv、install
查看>>
Redis学习笔记——dict
查看>>
前端实例练习 - 动效伸缩搜索框
查看>>
Ruby 2.x 源代码学习:ubuntu 环境 下载,编译,调试 ruby 源代码
查看>>
使用 Kanban精益创新
查看>>
Javaslang 3.0之路
查看>>
大搜车孙信宇:一个好的团队应该去中心化
查看>>
《A Practical Guide to Continuous Delivery》作者访谈录
查看>>
一文看懂大数据领域的六年巨变
查看>>
Rust 和Erlang的对比
查看>>