Мне успешно удалось получить ответы от FedEx и API-интерфейсов UPS, однако DHL просто сводит меня с ума.Ниже приведен мой код, который генерирует следующий запрос.
<?xml version="1.0" encoding="http://schemas.xmlsoap.org/soap/envelope/" standalone="no"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns2:trackShipmentRequest xmlns:ns2="http://scxgxtt.phx-dc.dhl.com/glDHLExpressTrack/providers/services/trackShipment">
<trackingRequest>
<TrackingRequest xmlns="http://www.dhl.com">
<Request xmlns="">
<ServiceHeader>
<MessageTime>2011-09-01T20:40:36.334+02:00</MessageTime>
<MessageReference>123456789012345678901234567890</MessageReference>
</ServiceHeader>
</Request>
<LevelOfDetails xmlns="">ALL_CHECK_POINTS</LevelOfDetails>
</TrackingRequest>
</trackingRequest>
</ns2:trackShipmentRequest>
</soapenv:Body>
</soapenv:Envelope>
Что мне действительно не хватает, так это раздел заголовка (протестирован в SOAP-UI):
<soapenv:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1">
<wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-12">
<wsse:Username>xxx</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">xxx</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header
Чтонужно ли добавить код, чтобы получить заголовок раздела SOAP-запроса, отправляемого на сервер DHL?
Ниже приведен мой действительный код.Это стандартное axis2 wsdl2java:
public class abc {
/**
* @param args
* @param String ref
* @throws IOException
*/
public static void main(String[] args) throws IOException {
System.setProperty("javax.net.ssl.trustStore","F:\\eclipse\\terefere\\testkeystore");
System.setProperty("javaxdhlrequest2.net.ssl.trustStorePassword","123456");
GblDHLExpressTrackStub stub = new GblDHLExpressTrackStub();
System.out.println("3");
System.out.println("5");
TrackShipmentRequest trackShipmentRequest = new TrackShipmentRequest();
TrackShipmentRequestE trackshipmentrequeste = new TrackShipmentRequestE();
PubTrackingRequest pubtrackingequest = new PubTrackingRequest();
System.out.println("6");
TrackingRequest dhlrequest = new TrackingRequest();
System.out.println("7");
Request request = new Request();
ServiceHeader header =new ServiceHeader();
System.out.println("8");
Calendar rightNow = Calendar.getInstance();
AWBNumber awbnumber = new AWBNumber();
awbnumber.setAWBNumber("2510305906");
LevelOfDetails level = null;
level= LevelOfDetails.ALL_CHECK_POINTS;
MessageReference message = new MessageReference();
message.setMessageReference("123456789012345678901234567890");
header.setMessageReference(message);
header.setMessageTime(rightNow);
request.setServiceHeader(header);
//dhlrequest.setAWBNumber(awb);
dhlrequest.setLevelOfDetails(level);
dhlrequest.setRequest(request);
pubtrackingequest.setTrackingRequest(dhlrequest);
trackShipmentRequest.setTrackingRequest(pubtrackingequest);
trackshipmentrequeste.setTrackShipmentRequest(trackShipmentRequest);
GblDHLExpressTrackCallbackHandler callb = new GblDHLExpressTrackCallbackHandler() {
};
stub._getServiceClient().getOptions().setUserName("abc");
stub._getServiceClient().getOptions().setPassword("abc");
stub._getServiceClient().getOptions().setProperty(HTTPConstants.CHUNKED, false);
stub._getServiceClient().engageModule("rampart");
stub.starttrackShipmentRequest(trackshipmentrequeste, callb);
System.out.println("11,5");
stub.trackShipmentRequest(trackshipmentrequeste);
System.out.println("13");
}
}