C# 调用使用 Java 编写的带用户名密码验证的 WebService

最近项目里面需要调用一个接口,开发方是使用 Java 开发的,而我这边是使用 C# 编写的代码。在添加了服务引用以后,并没有在提供的方法或属性里面找到输入用户名和密码的地方。

结果研究了两天发现,只需要按照接口开发方提供的字段名称,把 Headers 写在自动生成的 app.config 中 endpoint 节点即可。

这是接口开发方给的部分代码:

System.out.println("开始查找用户信息");
List<Header> headers = sope.getHeaders();
if (headers == null || headers.size() < 1) {
    throw new Fault(new IllegalArgumentException("找不到 Header。"));
}
Header header = headers.get(0);
Element el = (Element)header.getObject();
NodeList users = el.getElementByTagName("username");
NodeList passwords = el.getElementByTagName("password");
if (users.getLength() < 1) {
    throw new Fault(new IllegalArgumentException("找不到用户信息。"));
}
String username = users.item(0).getTextContent().Trim();
if (passwords.getLength() < 1) {
    throw new Fault(new IllegalArgumentException("找不到用户密码。"));
}
String password = passwords.item(0).getTextContent().Trim();

我这边的 app.config 文件如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name=XXXX />
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address=XXXX binding=XXXX bindingConfiguration=XXXX
          contract=XXXX name=XXXX>
        <headers>
          <UserInfo>
            <username>用户名写在这里</username>
            <password>密码写在这里</password>
          </UserInfo>
        </headers>
      </endpoint>
    </client>
  </system.serviceModel>
</configuration>

成功!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值