.NET调用.NET写的Web服务

成都创新互联专注于企业全网营销推广、网站重做改版、城口网站定制设计、自适应品牌网站建设、H5网站设计、商城建设、集团公司官网建设、成都外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为城口等各大城市提供网站开发制作服务。
.NET和.NET的Webservices对接比较简单。只要知道对方的web服务编码文件(.asmx)或者web服务描述文件(.wsdl),在项目中添加web应用即可。
同理,如果是你为对方提供web服务,只要提供上面的文件即可。
安全性方面我们是用了下面两个方法,如果有其他方法,不妨一起讨论:
1、soapheader验证
- public class ProductSoapHeader : SoapHeader
 - {
 - public string Username;
 - public string Password;
 - public ProductSoapHeader() { }
 - public ProductSoapHeader(string u, string p)
 - {
 - Username = u;
 - Password = p;
 - }
 - }
 
2、限制登入ip
- CustomerIP=HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
 
.NET调用Java写的web服务
.NET调用java也需要知道它的描述文件地址,具体有以下几种调用方法:
a)在项目中添加web应用。
b)使用wsdl.exe将wsdl文件编译成动态库,这样使用起来会更加方便。
b.1)生成类文件
- wsdl.exe /l:cs /n:webser /out:C:/webser.cs c:/test.wsdl
 
b.2)生成动态库
- csc /target:library /out:"c:\webser.dll" c:\webser.cs
 
c)直接sent SOAP request
如果对方提供了SOAP request的格式,这无疑是最直接的方法。
下面提供一个发送SOAP请求的示例:
    
    
    
    
     
     
     
     - private void sendSoap()  
 
     
     
     
     -     {  
 
     
     
     
     -  
 
     
     
     
     -         XmlDocument xmldoc = new XmlDocument();  
 
     
     
     
     -         xmldoc.Load(Server.MapPath("user.xml"));  
 
     
     
     
     -         string data = xmldoc.InnerXml;  
 
     
     
     
     -         string url = "XXX";  
 
     
     
     
     -         string result=null;  
 
     
     
     
     -         getResponse(url, data, ref result);  
 
     
     
     
     -         //others  
 
     
     
     
     -  
 
     
     
     
     -     }  
 
     
     
     
     - }  
 
     
     
     
     -    ///   
 
     
     
     
     -     /// 发送SOAP请求  
 
     
     
     
     -     ///   
 
     
     
     
     -     /// 地址  
 
     
     
     
     -     /// 请求内容  
 
     
     
     
     -     /// 返回结果  
 
     
     
     
     -     public void getResponse(string url, string datas, ref string result)  
 
     
     
     
     -     {  
 
     
     
     
     -         ASCIIEncoding encoding = new ASCIIEncoding();  
 
     
     
     
     -         byte[] data = encoding.GetBytes(datas);  
 
     
     
     
     -         HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);  
 
     
     
     
     -         request.AllowAutoRedirect = true;  
 
     
     
     
     -         request.Method = "POST";  
 
     
     
     
     -         request.ContentType = "text/xml; charset=utf-8";  
 
     
     
     
     -         request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";  
 
     
     
     
     -         request.ContentLength = data.Length;  
 
     
     
     
     -         Stream stream = request.GetRequestStream();  
 
     
     
     
     -         stream.Write(data, 0, data.Length);  
 
     
     
     
     -         stream.Close();  
 
     
     
     
     -         HttpWebResponse response = (HttpWebResponse)request.GetResponse();  
 
     
     
     
     -         StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);  
 
     
     
     
     -         result = reader.ReadToEnd();  
 
     
     
     
     -         reader.Close();  
 
     
     
     
     -     } 
 
    
    
    
    
一个SOAP格式的例子
    
    
    
    
     
     
     
     - < ?xml version="1.0" encoding="UTF-8"?> 
 
     
     
     
     - < soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
 
     
     
     
     - < soap:Body> 
 
     
     
     
     -    < e:RegisterUser xmlns:e="XXX"> 
 
     
     
     
     -     < UserInfo> 
 
     
     
     
     -      < email>XXX  
 
     
     
     
     -      < fname>XXX  
 
     
     
     
     -      < lname>XXX  
 
     
     
     
     -      < password>XXX  
 
     
     
     
     -     < /UserInfo> 
 
     
     
     
     -    < /e:RegisterUser> 
 
     
     
     
     - < /soap:Body> 
 
     
     
     
     - < /soap:Envelope> 
 
    
    
    
    
.NET里默认的SOAP格式:
    
    
    
    
     
     
     
     - < ?xml version="1.0" encoding="utf-8"?> 
 
     
     
     
     - < soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 
     
     
     
     -                xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 
     
     
     
     -                xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
 
     
     
     
     -   < soap:Body> 
 
     
     
     
     -     < DocumentWrappedLiteral xmlns="http://www.contoso.com"> 
 
     
     
     
     -       < MyAddress> 
 
     
     
     
     -         < Street>string  
 
     
     
     
     -         < City>string  
 
     
     
     
     -         < Zip>string  
 
     
     
     
     -       < /MyAddress> 
 
     
     
     
     -       < useZipPlus4>boolean  
 
     
     
     
     -     < /DocumentWrappedLiteral> 
 
     
     
     
     -   < /soap:Body> 
 
     
     
     
     - < /soap:Envelope> 
 
    
    
    
    
msdn上的一篇文章讲如何:控制 Web 服务方法的总体 SOAP Body 的格式设置
最近在做一些接口方面的工作,肯定还有很多没顾及到的东西。也希望大家能多讨论一些。
【编辑推荐】
                名称栏目:浅谈关于Webservices对接的一些问题
                
                本文路径:http://www.csdahua.cn/qtweb/news48/159098.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网