自动生成的webservice客户端设置请求消息头信息

这里讲的头消息是指发送webservice请求的HTTP头信息(MIME 头信息),而不是SOAP报文里面的Header标签内容。

package example;

import mypackage.GetOperInfoRequest;
import mypackage.GetOperInfoResponse;
import mypackage.Webservice11;
import mypackage.WebservicePortType;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.handler.MessageContext;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class HelloWorldClient {
  public static void main(String[] args) {
    // 自动生成的客户端,新增请求消息自定义头
    //Add HTTP request Headers
    // 此处value类型必须为List,因为下方HTTP request headers定义的类型是java.util.Map<java.lang.String, java.util.List<java.lang.String>>
    Map<String, List> requestHeaders = new HashMap<>();
    requestHeaders.put("sender", Collections.singletonList("SYS028"));
    requestHeaders.put("receiver", Collections.singletonList("SYS001"));

    // 创建自动生成的webservice实例
    Webservice11 service = new Webservice11();
    WebservicePortType port11 = service.getWebservicePort11();
    ((BindingProvider) port11).getRequestContext().put(MessageContext.HTTP_REQUEST_HEADERS, requestHeaders);

    // 创建生成的请求实体实例
    GetOperInfoRequest req = new GetOperInfoRequest();
    req.setRequest("<Request>"
            + "<starttime>2023-07-04 00:00:00</starttime>"
            + "<endtime>2023-07-06 00:00:00</endtime>"
            + "</Request>");
    // 调用方法
    GetOperInfoResponse res = port11.getOperInfo(req);
    System.out.println(res.getResponse());
  }

}

这里需要注意的是头消息(requestHeaders)泛型必须是<String, List>,否则运行会报错,原因如图:

 有关webservice的知识还在摸索中,如有理解不对的地方欢迎指出。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值