当前位置: 首页 > news >正文

网站快速排名推荐网络推广话术技巧

网站快速排名推荐,网络推广话术技巧,广西公路建设协会网站,自己注册公司c# WebService创建与调用 文章目录 c# WebService创建与调用一、前言二、webService相关术语1.XML2. WSDL3. SOAP 三、创建四、调用4.1 添加引用的方式4.2 动态代理的方式4.3 HttpWebRequest的方式 五、扩展 一、前言 WebService#xff0c;顾名思义就是基于Web的服务。它使用…c# WebService创建与调用 文章目录 c# WebService创建与调用一、前言二、webService相关术语1.XML2. WSDL3. SOAP 三、创建四、调用4.1 添加引用的方式4.2 动态代理的方式4.3 HttpWebRequest的方式 五、扩展 一、前言 WebService顾名思义就是基于Web的服务。它使用Web(HTTP)方式接收和响应外部系统的某种请求。从而实现远程调用。 我们可以调用互联网上查询天气信息Web服务然后将它嵌入到我们的程序(C/S或B/S程序)当中来当用户从我们的网点看到天气信息时他会认为我们为他提供了很多的信息服务但其实我们什么也没有做只是简单调用了一下服务器上的一段代码而已。 ISO的七层模型 物理层、数据链路层、网络层、传输层、表示层、会话层、应用层 Socket访问 Socket属于传输层它是对Tcp/ip协议的实现包含TCP/UDP,它是所有通信协议的基础Http协议需要Socket支持以Socket作为基础 Socket通信特点 开启端口该通信是 长连接的通信 很容易被防火墙拦截可以通过心跳机制来实现 开发难度大 传输的数据一般是字符串 可读性不强socket端口不便于推广性能相对于其他的通信协议是最优的 Http协议访问 属于应用层的协议对Socket进行了封装 跨平台传数据不够友好对第三方应用提供的服务希望对外暴露服务接口问题数据封装不够友好 可以用xml封装数据希望给第三方应用提供web方式的服务 http xml web Service 二、webService相关术语 1.XML Extensible Markup Language 扩展性标记语言 XML用于传输格式化的数据是Web服务的基础。namespace-命名空间。xmlns“http://itcast.cn” 使用默认命名空间。xmlns:itcast“http://itcast.cn”使用指定名称的命名空间。 2. WSDL WebService Description Language – Web服务描述语言。 通过XML形式说明服务在什么地方地址。通过XML形式说明服务提供什么样的方法 – 如何调用。 3. SOAP Simple Object Access Protocol –简单对象访问协议 SOAP作为一个基于XML语言的协议用于有网上传输数据。SOAP 在HTTP的基础上XML数据。SOAP是基于HTTP的。 SOAP的组成如下 Envelope – 必须的部分。以XML的根元素出现。Headers – 可选的。Body – 必须的。在body部分包含要执行的服务器的方法。和发送到服务器的数据。 三、创建 新建项目选择 “ASP.NET Web应用程序(.NET Framework)”。 填写好项目名称、选择项目位置以及所使用的框架然后点击创建。 选择一个空模板去掉为https配置选项然后创建。 打开解决方案资源管理器-右键创建的web项目-添加-新建项-添加 web 服务(AMSX)。 默认的是HelloWorld方法自己可以添加几个方法。 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services;namespace webServiceServer {/// summary/// WebService1 的摘要说明/// /summary[WebService(Namespace http://tempuri.org/)][WebServiceBinding(ConformsTo WsiProfiles.BasicProfile1_1)][System.ComponentModel.ToolboxItem(false)]// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务请取消注释以下行。 // [System.Web.Script.Services.ScriptService]public class WebService1 : System.Web.Services.WebService{[WebMethod]public string HelloWorld(){return Hello World;}[WebMethod(Description 求和的方法)]public double addition(double i, double j){return i j;}[WebMethod(Description 求差的方法)]public double subtract(double i, double j){return i - j;}[WebMethod(Description 求积的方法)]public double multiplication(double i, double j){return i * j;}[WebMethod(Description 求商的方法)]public double division(double i, double j){if (j ! 0)return i / j;elsereturn 0;}} } 启动项目。在上面我们可以看到我们所写的五个方法我选择其中一个点进去点击调用后我们可以看到输出了“4”。 到这里就创建好了一个服务了。 四、调用 4.1 添加引用的方式 新建项目-添加-服务引用打开刚刚启动的网站复制这个地址粘贴到服务引用中。 接下来点击高级添加Web 引用(W)-在打开的界面中的URL中输入刚刚复制的网址-点击蓝色箭头-添加引用即可在解决方案资源管理器中看到我们所添加的服务引用。 这样引用就添加好了那我们现在就开始使用吧。 直接运行一下点击按钮看看结果 调用成功~ 4.2 动态代理的方式 新建一个代理类 using System; using System.CodeDom; using System.CodeDom.Compiler; using System.IO; using System.Net; using System.Text; using System.Web; using System.Web.Caching; using System.Web.Services.Description; using System.Xml.Serialization;namespace webServiceClient {public class WebServiceHelper{public static void CreateWebServiceDLL(string url, string className, string methodName, string filePath){// 1. 使用 WebClient 下载 WSDL 信息。WebClient web new WebClient();//Stream stream web.OpenRead(url ?WSDL);//CertificateTrust.SetCertificatePolicy();//证书出现问题时调用此代码//未能为 SSL/TLS 安全通道建立信任关系Stream stream web.OpenRead(url);// 2. 创建和格式化 WSDL 文档。ServiceDescription description ServiceDescription.Read(stream);//如果不存在就创建file文件夹if (Directory.Exists(filePath) false){Directory.CreateDirectory(filePath);}if (File.Exists(filePath className _ methodName .dll)){//判断缓存是否过期var cachevalue HttpRuntime.Cache.Get(className _ methodName);if (cachevalue null){//缓存过期删除dllFile.Delete(filePath className _ methodName .dll);}else{// 如果缓存没有过期直接返回return;}}// 3. 创建客户端代理代理类。ServiceDescriptionImporter importer new ServiceDescriptionImporter();// 指定访问协议。importer.ProtocolName Soap;// 生成客户端代理。importer.Style ServiceDescriptionImportStyle.Client;importer.CodeGenerationOptions CodeGenerationOptions.GenerateProperties | CodeGenerationOptions.GenerateNewAsync;// 添加 WSDL 文档。importer.AddServiceDescription(description, null, null);// 4. 使用 CodeDom 编译客户端代理类。// 为代理类添加命名空间缺省为全局空间。CodeNamespace nmspace new CodeNamespace();CodeCompileUnit unit new CodeCompileUnit();unit.Namespaces.Add(nmspace);ServiceDescriptionImportWarnings warning importer.Import(nmspace, unit);CodeDomProvider provider CodeDomProvider.CreateProvider(CSharp);CompilerParameters parameter new CompilerParameters();parameter.GenerateExecutable false;// 可以指定你所需的任何文件名。parameter.OutputAssembly filePath className _ methodName .dll;parameter.ReferencedAssemblies.Add(System.dll);parameter.ReferencedAssemblies.Add(System.XML.dll);parameter.ReferencedAssemblies.Add(System.Web.Services.dll);parameter.ReferencedAssemblies.Add(System.Data.dll);// 生成dll文件并会把WebService信息写入到dll里面CompilerResults result provider.CompileAssemblyFromDom(parameter, unit);if (result.Errors.HasErrors){// 显示编译错误信息System.Text.StringBuilder sb new StringBuilder();foreach (CompilerError ce in result.Errors){sb.Append(ce.ToString());sb.Append(System.Environment.NewLine);}throw new Exception(sb.ToString());}//记录缓存var objCache HttpRuntime.Cache;// 缓存信息写入dll文件objCache.Insert(className _ methodName, 1, null, DateTime.Now.AddMinutes(5), TimeSpan.Zero, CacheItemPriority.High, null);}} }调用方法前面四个配置信息可以写在app.config里也可以直接代码里写死。 using System; using System.Configuration; using System.IO; using System.Reflection; using System.Windows.Forms; using webServiceClient.myWebService;namespace webServiceClient {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){WebService1 wb new WebService1();double s wb.subtract(10, 6);textBox1.Text s.ToString();}private void UseWebService(string xml){// 读取配置文件获取配置信息string url string.Format(http://localhost:52264/WebService1.asmx);//ConfigurationManager.AppSettings[WebServiceAddress];//WebService地址string className WebService1;//ConfigurationManager.AppSettings[ClassName];//WebService提供的类名string methodName subtract;//ConfigurationManager.AppSettings[MethodName];// WebService方法名string filePath string.Format(D:\test\webServiceServer\bin\);//ConfigurationManager.AppSettings[FilePath];//存放dll文件的地址// 调用WebServiceHelperWebServiceHelper.CreateWebServiceDLL(url, className, methodName, filePath);// 读取dll内容byte[] filedata File.ReadAllBytes(filePath className _ methodName .dll);// 加载程序集信息Assembly asm Assembly.Load(filedata);Type t asm.GetType(className);// 创建实例object o Activator.CreateInstance(t);MethodInfo method t.GetMethod(methodName);// 参数//object[] args { xml };object[] args { 10,2};// 调用访问获取方法返回值string value method.Invoke(o, args).ToString();//输出返回值MessageBox.Show($返回值:{value});}private void button2_Click(object sender, EventArgs e){UseWebService(111);}} }调用成功~ 4.3 HttpWebRequest的方式 新建一个HttpHelper帮助类 using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; using System.Web; using System.Xml;namespace webServiceClient {public class HttpHelper{public static string CallServiceByGet(string strURL){//创建一个HTTP请求HttpWebRequest request (HttpWebRequest)WebRequest.Create(strURL);request.Method get;HttpWebResponse response (System.Net.HttpWebResponse)request.GetResponse();Stream s response.GetResponseStream();//转化为XML自己进行处理XmlTextReader Reader new XmlTextReader(s);Reader.MoveToContent();string strValue Reader.ReadInnerXml();Reader.Close();strValue strValue.Replace(, );strValue strValue.Replace(, );return strValue;}public static string CallServiceByPost(string strURL, Dictionarystring,string parameters){//创建一个HTTP请求HttpWebRequest request (HttpWebRequest)WebRequest.Create(strURL);//Post请求方式request.Method POST;//内容类型request.ContentType application/x-www-form-urlencoded;//设置参数并进行URL编码StringBuilder codedString new StringBuilder();foreach (string key in parameters.Keys){codedString.Append(HttpUtility.UrlEncode(key));codedString.Append();codedString.Append(HttpUtility.UrlEncode(parameters[key]));codedString.Append();}string paraUrlCoded codedString.Length 0 ? string.Empty : codedString.ToString().Substring(0, codedString.Length - 1);//string paraUrlCoded HttpUtility.UrlEncode(ProductId);//paraUrlCoded HttpUtility.UrlEncode(this.textBox1.Text);byte[] payload;//将URL编码后的字符串转化为字节payload System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);//设置请求的ContentLengthrequest.ContentLength payload.Length;//发送请求获得请求流Stream writer request.GetRequestStream();//将请求参数写入流writer.Write(payload, 0, payload.Length);//关闭请求流writer.Close();//获得响应流HttpWebResponse response (HttpWebResponse)request.GetResponse();Stream s response.GetResponseStream();//转化为XML自己进行处理XmlTextReader Reader new XmlTextReader(s);Reader.MoveToContent();string strValue Reader.ReadInnerXml();Reader.Close();strValue strValue.Replace(, );strValue strValue.Replace(, );return strValue;}}} using System; using System.Collections.Generic; using System.Configuration; using System.IO; using System.Reflection; using System.Security.Policy; using System.Text; using System.Windows.Forms; using System.Xml.Linq; using webServiceClient.myWebService;namespace webServiceClient {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){WebService1 wb new WebService1();double s wb.subtract(10, 6);textBox1.Text s.ToString();}private void UseWebService(string xml){// 读取配置文件获取配置信息string url string.Format(http://localhost:52264/WebService1.asmx);//ConfigurationManager.AppSettings[WebServiceAddress];//WebService地址string className WebService1;//ConfigurationManager.AppSettings[ClassName];//WebService提供的类名string methodName subtract;//ConfigurationManager.AppSettings[MethodName];// WebService方法名string filePath string.Format(D:\test\webServiceServer\bin\);//ConfigurationManager.AppSettings[FilePath];//存放dll文件的地址// 调用WebServiceHelperWebServiceHelper.CreateWebServiceDLL(url, className, methodName, filePath);// 读取dll内容byte[] filedata File.ReadAllBytes(filePath className _ methodName .dll);// 加载程序集信息Assembly asm Assembly.Load(filedata);Type t asm.GetType(className);// 创建实例object o Activator.CreateInstance(t);MethodInfo method t.GetMethod(methodName);// 参数//object[] args { xml };object[] args { 10,2};// 调用访问获取方法返回值string value method.Invoke(o, args).ToString();//输出返回值MessageBox.Show($返回值:{value});}private void button2_Click(object sender, EventArgs e){UseWebService(111);}private void button3_Click(object sender, EventArgs e){Dictionarystring, string parameters new Dictionarystring, string();parameters.Add(i, 5);parameters.Add(j, 2);string url string.Format(http://localhost:52264/WebService1.asmx/addition);var result HttpHelper.CallServiceByPost(url, parameters);}} } 调用成功~ 到这里我们就把三种调用方式讲完咯。 五、扩展 这里有一些别人写好的服务我们可以直接调用。 调用别人写好的webService来体验一把 http://www.webxml.com.cn/zh_cn/index.aspx
http://www.dnsts.com.cn/news/265234.html

相关文章:

  • windows 2003 iis 多网站一键生成ppt免费
  • 商业网站开发实训心得体会范文网站设计网站设计网站设计
  • 河北保定建设工程信息网站辽宁做网站和优化哪家好
  • html5 手机网站开发淘宝做动图网站
  • 网站建设注意事项手机网站方案.doc
  • 企业网站seo维护南沙建设网站
  • linux建站和wordpress建站网络工程师培训学校
  • 行业网站做的好的自己做的网站怎么取sql数据库
  • 广州营销网站建设东莞网站设计及拍摄方案公司
  • 基于html5的移动端网站开发制作网页常见的布局方法有
  • 广州网站开发 找亦客公司优质wordpress调用分类目录
  • 广州魔站建站邯郸建设企业网站
  • 网站底部浮动电话广告做网站时默认字体是微软雅黑
  • 网站角色权限建设证书查询官方网站
  • 做淘宝网站目的2017做网站挣钱
  • 成都网站建设公司招聘36 氪 网站如何优化
  • 石家庄自己怎么做网站啊免费软件app全免费
  • 学风建设网站版块做全球视频网站赚钱吗
  • :wordpress网站如何播放自己的视频信息流广告
  • 网站虚拟主机公司全球虚拟主机论坛
  • 免费行情网站推荐免费网站建设可信吗
  • 工商局网站建设方案四川省住房建设厅网站打不开
  • 局域网站开发三网合一网站建设报价
  • 教育机构排名全国十大教育机构排名北京seo案例
  • 长沙cms模板建站o2o网站 方案
  • 郑州哪家做网站便宜选择热门网站做推广的原因
  • 做网站后有人抢注品牌关键字广告文案策划
  • 路由器做php网站吗510企业网站系统源码
  • 芭乐站长统计 网站统计设计公司企业愿景
  • 年终总结ppt模板免费下载网站网站优化 合同