新聞中心
.NET調(diào)用.NET寫的Web服務(wù)

成都創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)營(yíng)銷推廣、網(wǎng)站重做改版、城口網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)、商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為城口等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
.NET和.NET的Webservices對(duì)接比較簡(jiǎn)單。只要知道對(duì)方的web服務(wù)編碼文件(.asmx)或者web服務(wù)描述文件(.wsdl),在項(xiàng)目中添加web應(yīng)用即可。
同理,如果是你為對(duì)方提供web服務(wù),只要提供上面的文件即可。
安全性方面我們是用了下面兩個(gè)方法,如果有其他方法,不妨一起討論:
1、soapheader驗(yàn)證
- 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調(diào)用Java寫的web服務(wù)
.NET調(diào)用java也需要知道它的描述文件地址,具體有以下幾種調(diào)用方法:
a)在項(xiàng)目中添加web應(yīng)用。
b)使用wsdl.exe將wsdl文件編譯成動(dòng)態(tài)庫(kù),這樣使用起來會(huì)更加方便。
b.1)生成類文件
- wsdl.exe /l:cs /n:webser /out:C:/webser.cs c:/test.wsdl
b.2)生成動(dòng)態(tài)庫(kù)
- csc /target:library /out:"c:\webser.dll" c:\webser.cs
c)直接sent SOAP request
如果對(duì)方提供了SOAP request的格式,這無疑是最直接的方法。
下面提供一個(gè)發(fā)送SOAP請(qǐng)求的示例:
- 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
-
- }
- }
- ///
- /// 發(fā)送SOAP請(qǐng)求
- ///
- /// 地址
- /// 請(qǐng)求內(nèi)容
- /// 返回結(jié)果
- 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();
- }
一個(gè)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里默認(rèn)的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 服務(wù)方法的總體 SOAP Body 的格式設(shè)置
最近在做一些接口方面的工作,肯定還有很多沒顧及到的東西。也希望大家能多討論一些。
【編輯推薦】
- WebServices返回?cái)?shù)據(jù)的4種方法橫向比較
- 利用C#指針進(jìn)行圖像操作
- C# 4.0中泛型協(xié)變性和逆變性詳解
- C#實(shí)例講解二叉樹原理與實(shí)現(xiàn)
- Ajax,未來的WebServices?
分享標(biāo)題:淺談關(guān)于Webservices對(duì)接的一些問題
網(wǎng)站鏈接:http://m.5511xx.com/article/cdjgeec.html


咨詢
建站咨詢
