Как добавить или управлять заголовком http в вызове веб-сервиса в java

Существует требование добавить новую пару значений ключа заголовка http в запрос мыла. Что-то вроде ниже.

 HTTP/1.1 200 OK
 Cache-Control: no-cache
 Pragma: no-cache
 Content-Type: text/xml; charset=utf-8
 New-Key: Some dynamic value

 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
 <soapenv:Body>

Как я могу добавить новую пару значений ключа (New-Key: Some dynamic value) в заголовок http при выполнении запроса на мыло? Позже значение будет извлечено сервером из http-заголовка. В качестве требования новое поле не должно добавляться ни в заголовок мыла, ни в тело мыла.

Мы используем инструмент IBM wsdl2java, который реализует спецификацию IBM JAX-RPC для создания клиентов Java и вызова вызовов веб-службы SOAP.


person Sunny    schedule 19.04.2015    source источник


Ответы (1)


Ответ на
https://www-01.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.base.doc/ae/rwbs_transportheaderproperty.html

public class MyApplicationClass {
// Inject an instance of the service's port-type.
@WebServiceRef(EchoService.class)
private EchoPortType port;

// This method will invoke the web service operation and send and receive transport headers.
public void invokeService() {

    // Set up the Map that will contain the request headers.
    Map<String, Object>requestHeaders = new HashMap<String, Object>();
    requestHeaders.put(“Cookie”, “ClientAuthenticationToken=FFEEBBCC”);
    requestHeaders.put(“MyHeaderFlag”, new Boolean(true));

    // Set the Map as a property on the RequestContext.
    BindingProvider bp = (BindingProvider) port;
    bp.getRequestContext().put(com.ibm.websphere.webservices.Constants.REQUEST_TRANSPORT_PROPERTIES, requestHeaders);

    // Set up the Map to retrieve transport headers from the response message.
    Map<String, Object>responseHeaders = new HashMap<String, Object>();
    responseHeaders.put(“Set-Cookie”, null);
    responseHeaders.put(“MyHeaderFlag, null);

    // Invoke the web services operation.
    String result = port.echoString(“Hello, world!”);

    // Retrieve the headers from the response.
    String cookieValue = responseHeaders.get(“Set-Cookie”);
    String headerFlag = responseHeaders.get(“MyHeaderFlag”);
}

}

person Sunny    schedule 12.11.2015