亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

.net在不同情況下調用帶soapheader的webservice的方式

2019-11-14 13:56:28
字體:
來源:轉載
供稿:網友

國慶長假到了,本想出去玩玩,無奈自己屌絲一枚,啥都沒有,只能自己宅在家里思考思考人生。不過人生還是過于復雜,一時間也想不出個所以然,只能是整理一下在工作中遇到的一些小問題,首先是關于帶soapheader的webservice。

 

一、webservice大家都用的比較頻繁,有時也有一些帶soapheader的webservice,首先一種最簡單的調用soapheader的情況就是,如果對方的webservice也是用.net寫的,可能會是這種方式

     [WebMethod]        [SoapHeader("Header")]        public string HelloWorld()        {            if (Header.username == "admin" && Header.passWord == "123")            {                return "Hello World";            }            else            {                throw new Exception("驗證失敗");            }        }        public class AuthHeader : SoapHeader        {            public string username;            public string password;        }

之后我們在通過添加服務引用或者是利用vs的wsdl工具生成代理類,都會把上面的AuthHeader類型給生成好,我們要做的就是簡單的賦值工作了

public void PRocessRequest(HttpContext context)        {            context.Response.ContentType = "text/plain";            //要調用的webservice的類型,自動生成在代理類中            SoapHeaderTest soapTest = new SoapHeaderTest();            //要調用的soapheader的類型,自動生成在代理類中            AuthHeader authHeader = new AuthHeader();            authHeader.username = "admin";            authHeader.password = "123";            soapTest.AuthHeaderValue = authHeader;            string content = soapTest.HelloWorld();            context.Response.Write(content);        }

通過這種方式就可以通過驗證調用webservice獲取返回信息了。

 

二、有些時候我們發現我們調用對方的webservice一直失敗,然后添加的服務引用或者是代理類中也沒有soapheader的類型,然后客戶告訴我們,你要調用接口必須傳soapHeader,這個soapHeader在.net中是這樣的

    [DataContract(Namespace = "http://xxx.xxx.xxxxx")]    public class AuthHeader    {        public string username { get; set; }        public string password { get; set; }    }

我們把這個AuthHeader按照上面的格式寫好。然后在調用webservice中的方法之前加上我們的soapheader,代碼如下:

        //添加服務引用生成的類型            SoapTestService.SoapHeaderTestSoapClient client = new SoapTestService.SoapHeaderTestSoapClient();            //客戶告訴我們AuthHeader的類型,然后自己在程序中對應寫出來            AuthHeader header = new AuthHeader();            header.username = "admin";            header.password = "123";            //開始加入監控頭信息            AddressHeader soapheader = AddressHeader.CreateAddressHeader("AuthHeader",  // Header Name                                       "http:xxx.xxx.xxxxx",//地址頭的命名空間                                       header);//傳人的AuthHeader            EndpointAddressBuilder eab = new EndpointAddressBuilder(client.Endpoint.Address);            eab.Headers.Add(soapheader);//將地址頭加入進去            client.Endpoint.Address = eab.ToEndpointAddress();            //結束加入監控頭信息

之后在調用webservice的方法就可以成功調用并獲取返回內容了。

 

三、最后一種情況就是人家只告訴你需要加一個這樣的

<AuthHeader>

<username>用戶名</username>

<password>密碼</password>

</AuthHeader>

這個時候就需要使用我們的SoapUI了,我們來用soapui看看我們報文吧

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/">   <soap:Header/>   <soap:Body>      <tem:HelloWorld/>   </soap:Body></soap:Envelope>

發現怎么<soap:Header/>中是空的呢,然后我們按照別人給的格式將soapheader中填上

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/">   <soap:Header>      <AuthHeader>         <username>admin</username>         <password>123</password>      </AuthHeader>   </soap:Header>   <soap:Body>      <tem:HelloWorld/>   </soap:Body></soap:Envelope>

然后這樣發送過去,發現webservice成功訪問并且接收到返回值了,哎,任務時間比較緊迫,只能用最簡單也是最笨的方法了,替換數據然后在把報文發過去

 string url = ConfigurationManager.AppSettings["ContractWebService"].ToString();                                //通過webservice的地址創建HttpWebRequest                                var webRequest = (HttpWebRequest)WebRequest.Create(new Uri(url));                                webRequest.Accept = "text/xml";                                webRequest.Method = "POST";//請求方式,必須寫                                //將請求報文寫進去                                using (var requestStream = webRequest.GetRequestStream())                                {                                    using (var textWriter = new StreamWriter(requestStream))                                    {                                        textWriter.Write(SoapXml);//這里的soapxml就是我們要發送報文的字符串                                    }                                }                                       //發出請求并且獲取響應信息                                WebResponse wr = webRequest.GetResponse();                                string retString = "";                                //將返回的xml格式的報文取出                                using (Stream myResponseStream = wr.GetResponseStream())                                {                                    using (StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("UTF-8")))                                    {                                         retString = myStreamReader.ReadToEnd();                                    }                                }

最終返回的xml中的內容也只能是自己解析了。。。

可能遇到后面兩種情況的會少一些,希望大家有其他的方式可以分享一下。最后祝大家國慶節快樂!


上一篇:C#筆記謄錄

下一篇:えええ

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av免费在线| 国产精品啪视频| 久久中文字幕国产| 日韩av综合中文字幕| 成人在线国产精品| 久久久精品久久| 国产午夜精品麻豆| 亚洲精品一区二区久| 亚洲男人天堂视频| 成人免费午夜电影| 国产91精品久久久久久| 97视频在线观看亚洲| 日韩av一区在线| 欧美日韩国产色视频| 亚洲精品国产精品国产自| 久久青草福利网站| 国产精品扒开腿做| 国产精品美女www爽爽爽视频| 91色精品视频在线| 午夜精品一区二区三区在线播放| 亚洲人成电影在线播放| 在线观看视频99| 91精品国产91久久久久久| 欧美色videos| 欧美最近摘花xxxx摘花| 欧美成人一二三| 欧美性生交大片免网| 久久免费视频这里只有精品| 91久久久国产精品| 亚洲色图25p| 欧美日本中文字幕| 国产精品成人在线| 怡红院精品视频| 538国产精品一区二区在线| 国产日本欧美一区| 欧美一级高清免费| 欧美另类暴力丝袜| 97视频免费在线看| 欧美又大粗又爽又黄大片视频| 91老司机在线| 亚洲视频视频在线| 国产精品偷伦免费视频观看的| 国产精品91在线观看| 亚洲精品v天堂中文字幕| 国产在线拍揄自揄视频不卡99| 欧美猛少妇色xxxxx| 国产99久久久欧美黑人| 日韩精品在线观看一区| 91精品综合久久久久久五月天| 91影院在线免费观看视频| 久久久久国产精品免费网站| 91免费在线视频网站| 大桥未久av一区二区三区| 一区二区在线视频播放| 欧美乱妇40p| 一本色道久久88精品综合| 秋霞成人午夜鲁丝一区二区三区| 欧美精品久久久久久久久| 国产精品第1页| 国产成人福利视频| 亚洲综合中文字幕在线观看| 色妞久久福利网| 97av视频在线| 久久久av亚洲男天堂| 成人免费观看a| 欧美丰满片xxx777| 日韩亚洲成人av在线| 欧美高清视频在线| 伦理中文字幕亚洲| 日韩中文字幕在线看| 国产日韩在线一区| 亚洲综合在线做性| 欧美亚洲在线观看| 日本精品视频在线播放| 日韩电影在线观看中文字幕| 日本欧美黄网站| 国产成+人+综合+亚洲欧美丁香花| 欧美日韩免费在线| 国产精品xxx视频| 欧美限制级电影在线观看| 久久精品国产亚洲| 欧美福利小视频| 亚洲aa中文字幕| 欧美福利在线观看| 国产精品久久久久久久av大片| 久久久天堂国产精品女人| 国产精自产拍久久久久久| 最新中文字幕亚洲| 91麻豆国产精品| 国产精品自拍偷拍视频| 国产女同一区二区| 欧美肥老太性生活视频| 色妞欧美日韩在线| 日韩av电影在线免费播放| 亚洲第一区第一页| 欧美电影免费播放| 欧美视频专区一二在线观看| 欧美又大粗又爽又黄大片视频| 国产精品成人av在线| 亚洲缚视频在线观看| 日韩精品在线视频| 日韩av免费看网站| 久久中文字幕在线视频| 91香蕉亚洲精品| 国产成人高清激情视频在线观看| 国产成人a亚洲精品| 色妞色视频一区二区三区四区| 欧美精品国产精品日韩精品| 亚洲国产成人精品女人久久久| 亚洲精品资源美女情侣酒店| 欧美激情va永久在线播放| 一区二区日韩精品| 欧美激情xxxxx| 久久久国产精品免费| 91免费综合在线| 欧美激情伊人电影| 琪琪第一精品导航| 国产一区二区三区丝袜| 日本高清视频精品| 国产欧美 在线欧美| 91精品综合久久久久久五月天| 欧美成人精品一区| www.久久色.com| 久久精品国产69国产精品亚洲| 欧美一级淫片丝袜脚交| 国产91在线播放| 精品久久久免费| 欧美激情网友自拍| 欧美亚洲国产视频| 亚洲精品久久久久| 国产成人精品久久二区二区| 亚洲精品美女久久久久| 色婷婷综合久久久久| 精品久久久久久国产| 日韩在线观看成人| 国产成人jvid在线播放| 欧美日韩中文在线观看| 欧美在线视频网站| 欧美性xxxxx| 欧美中文字幕视频| 久久久久女教师免费一区| 欧美精品午夜视频| 久久精品99久久久香蕉| 日韩电影在线观看永久视频免费网站| 成人免费网视频| 日韩美女写真福利在线观看| 国产精品久久久久久久久久东京| 精品中文视频在线| 中文字幕欧美在线| 欧美精品18videosex性欧美| 欧美性猛交xxxx免费看久久久| 一区二区三区视频观看| 秋霞午夜一区二区| 国产精品欧美日韩一区二区| 性金发美女69hd大尺寸| 黑人巨大精品欧美一区二区免费| 91精品视频在线看| 欧美—级高清免费播放| 亚洲精品美女在线| 国产精品久久一| 国产ts一区二区| 日韩一区二区欧美| 搡老女人一区二区三区视频tv| 欧美床上激情在线观看|