只有wsdl添加webservice 带身份验证的WebService使用(特别是SAP PI发布的)总结(备忘录)...

总结如下:

1.如果客户只给了WSDL地址如:http://www.xxxxxx.com:50000?wsdl ,而开发电脑又无法访问这个地址时,怎么添加服务引用,有两种方法

一.在能访问这个地址的电脑上用浏览器打开这个地址,会看到类似如下的xml,用浏览器的另存为,存为一个xml文件,将xml保存到开发电脑上,用vs的添加web引用,在引用地址里输入xml文件的路径,即可完成引用.

二.在能够访问wsdl地址的电脑上,利用svcutil.exe 工具生成代理类和配置文件,然后将文件复制到项目中即可调用.具体请参考以下:

http://www.cnblogs.com/scottckt/archive/2012/05/20/2510716.html

http://www.cnblogs.com/hedongsong/archive/2012/12/19/2824646.html

2.如果webservice使用了身份验证时怎么使用(特别是SAP PI发布的)

 var smsService = new SmSendService.osSMS_LMSService();

 var proxy = new WebProxy("webservice服务地址", true);
proxy.Credentials = new NetworkCredential("UserName", "Pwd");

 smsService.Proxy = proxy;
smsService.Credentials = new NetworkCredential("UserName", "Pwd");

红色字体是关键部分,需要注意的是代理和service的身份验证都要设置用户名和密码.

以下是几种错误的处理方式:

提示:远程服务器返回了意外响应: (407) Proxy Authentication Required。 ---> System.Net.WebException: 远程服务器返回错误: (407) 需要代理身份验证。

此问题是因为没有设置代理或者没有为代理指定身份验证.

var proxy = new WebProxy("webservice服务地址", true);

proxy.Credentials = new NetworkCredential("UserName", "Pwd");

 smsService.Proxy = proxy;

加上这几句就ok了.

如果出现 System.Net.WebException: 请求因 HTTP 状态 401 失败: Unauthorized。

加上smsService.Credentials = new NetworkCredential("UserName", "Pwd");这句就ok了

或者是让服务发布方启用匿名访问也可以.

 

转载于:https://www.cnblogs.com/coolxiaomi/p/4274531.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值