• WebService的调用


      今天测试用代码如何去调用WebService,因为之前都是直接vs直接引用,网上搜索的很多也并没有讲清楚,搞得一直不得劲。其实基元对象(string/int等)的调用倒是挺简单的,根据方法名赋值传参就可以了,一直搞不定的是自定义对象的访问。最后终于发现还是要仔细看WebService的方法描述说明呀。

      先定义一个WebService方法:

    发布后,打开WebService地址,我们点击查看方法的描述

    可以看到一共有三种访问方法的方式:soap1.1,soap1.2,http post

     灰色的描述其实已经告诉我们访问的方式。包括content-type,headers需要的参数等。我今天一直困在http post传复杂对象的问题上,后来查看对应的方法描述后才发现传递复杂对象是没有http post的访问方式的。对于所有的WebService方法,都可以用soap的方式进行访问,我们需要做的只是了解xml的格式然后传过去就可以了。

      以下代码描述如何通过代码访问WebService,报文xml内容请参照灰色部分方法描述:

     1             var xml = "your xml";
     2             var bytes = Encoding.UTF8.GetBytes(xml);
     3             var url = "your url";//注意,是webservice入口,不是方法入口,如:http://localhost:19546/WebService.asmx
     4             var request = (HttpWebRequest)WebRequest.Create(url);
     5             request.Method = "POST";
     6             request.ContentType = "text/xml; charset=utf-8";//参照方法描述给
     7             request.Accept = "text/html,application/xhtml+xml,application/xml";
     8             //request.Headers.Add("SOAPAction", url);//根据描述判断是否需要加上
     9             request.ContentLength = bytes.Length;
    10             var reqStream = request.GetRequestStream();
    11             reqStream.Write(bytes, 0, bytes.Length);
    12             reqStream.Close();
    13             var rep = request.GetResponse();
    14             var stream = rep.GetResponseStream();
    15             System.IO.StreamReader sr = new System.IO.StreamReader(stream);
    16             var ret = sr.ReadToEnd(); //ret 返回值也是xml格式,可以自行序列话成对象
  • 相关阅读:
    第10组 Beta冲刺 (4/5)
    第10组 Beta冲刺 (3/5)
    第10组 Beta冲刺 (2/5)
    第10组 beta冲刺(1/5)
    软工实践个人总结
    第01组 每周小结(3/3))
    第01组 每周小结(2/3)
    第01组 每周小结 (1/3)
    第01组 beta冲刺总结
    第01组 beta冲刺(5/5)
  • 原文地址:https://www.cnblogs.com/jidanfan/p/6679092.html
Copyright © 2020-2023  润新知