zoukankan      html  css  js  c++  java
  • 只有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了

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

  • 相关阅读:
    软件工程第二次作业
    第一次作业
    理论物理特训-02
    左神-06 二叉树
    哲学通论之人-05(end)
    哲学通论之人-04
    左神-05 二分搜索(多看几遍)
    哲学通论之人-01
    航空母舰-04(end)
    题解 P3126 【[USACO15OPEN]回文的路径Palindromic Paths】
  • 原文地址:https://www.cnblogs.com/coolxiaomi/p/4274531.html
Copyright © 2011-2022 走看看