C#中怎么调用WebService

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中怎么调用WebService相关的知识,希望对你有一定的参考价值。

在要调用的项目下的引用中,右单击,选择“添加服务引用。。。”在弹出的的对话框中填写webservice地址,下方命名空间改成你想要的,然后确定就行了。
调用的时候:

ns.ClassName ws = new ns.className();
string s = ws.HelloWorld();

ns是你刚填的命名空间, className是对应的webservice生成的类
参考技术A 你的项目工程鼠标右键有个添加服务引用的功能,这个可以直接引用webservice,在客户端生成一个代理,接着你就可以直接像引用某个类的方式来使用webservice接口了。 参考技术B 先要添加引用然后就可以直接用了。本回答被提问者采纳 参考技术C 据我所知有以下几个:
1、第一个就是楼上几位说的,添加引用,但是这种方式是在添加引用的时候就要写死了url的,万一webservice改了url,客户端就要重新编译了;
2、动态调用,这种方式比较灵活,可以把webservice的url写进参数文件,就算改了url,也无需重新编译,这个方法需要用到反射,代码生成器CodeDom等知识;
3、用HTTP协议的GET和POST,这种方式也是可以把url写进参数文件,需要用到调用HttpWebRequest,xmldocument等相关的类和方法;
4、利用 wsdl.exe生成webservice代理类,生成代理类的特点跟引用有点像,也是要在生成代理的时候就要写死url的,调用方式也跟添加引用类似的。
以上几个题主可以行百度,很多资料和代码可以学习的

有一个已知的wsdl,怎么调用webservice(C#中)

通常是要用的服务端提供的wsdl来了解服务的接口形式和数据形式,在 XFire里应该是可以用获得来的wsdl建立client端的反向工程(eclipse和myEclipse都可以)。如果你根本不知道服务端提供什么样的服务你又如何去调用它呢?或者说你又为什么要调用它呢?所以你的服务端应该会有wsdl(服务表述文件)提供,试试在浏览器里浏览
应该可以看到wsdl,然后将它保存为扩展名为.wsdl的文件,如果你有开发工具,可以尝试由这个wsdl文件反向创建你的client端程序,(如果自己去解读wsdl就比较复杂了。。)。
呵呵,我也是前两天才听过公司的一个web service的traning,并不太熟,希望你能搞定,共同探讨
附加:说明你的soap请求发过去了,server也接到,但是你缺少了SOAPAction的属性值在HTTP包头里(header),相信你清楚HTTP header的概念,你要将SOAPAction设置到到HTTP header里,就像你建立一个http connection 时需要在header里设置Content-Type一样。
如果我没理解错,SOAPAction设置的是调用server的operation(),这个字段的设置规则也在wsdl里可以找到,你在wsdl里找一下<soap:operation soapAction=这个元素,如果找不到,尝试着在http header里将SOAPAction 设置为""(空),但一定要设置,如果你用的是XFire理论上是不用设置,可能是你的client端没有正确的按照wsdl建立反项工程的原因,不过XFire应该也可以手动设置: Client.setProperty("SOAPAction","");
或者你可以看看这个:
总之是你缺少了SOAPAction 在HTTP header里,至于怎么设置,就要看你具体的code形式了。。。
参考技术A WSDL (Web Services Description Language,Web 服务描述语言)
确定该服务可用后,在(VS)项目上下菜单中选择 添加WEB引用。
通过在URL处直接输入WSDL文件路径添加即可。

以上是关于C#中怎么调用WebService的主要内容,如果未能解决你的问题,请参考以下文章

C#中怎么用process调用一个exe文件并传入参数?

C# WPF中xaml怎么调用.cs中的数据?反过来怎么调用?

unity c#怎么调用析构函数

unity的js脚本怎么调用c#的类

c#怎么调用cmd的命令呀?或者说怎么向cmd中写入命令?

c#的main怎么调用