Я пытаюсь отправить запрос на мыло в открытый веб-сервис (конвертер валют webserviceX.NET). Вот мой код:
String SOAP_REQUEST = "<SOAP:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:SOAP=\"http://schemas.xmlsoap.org/soap/envelope/\"><SOAP:Body><ConversionRate xmlns=\"http://www.webserviceX.NET/\"/>" +
"<FromCurrency>EUR</FromCurrency><ToCurrency>ILS</ToCurrency></SOAP:Body></SOAP:Envelope>";
// SOAPEnvelope env = new SOAPEnvelope();
//Create a Stream Source of the Request String
byte[] reqBytes = SOAP_REQUEST.getBytes();
ByteArrayInputStream bis = new ByteArrayInputStream(reqBytes);
StreamSource ss = new StreamSource(bis);
//Create a SOAP Message Object
MessageFactoryImpl messageFactory = new MessageFactoryImpl();
SOAPMessage msg = messageFactory.createMessage();
SOAPPart soapPart = msg.getSOAPPart();
//Set the soapPart Content with the stream source
soapPart.setContent(ss);
//Create a WebService Call
Service service = new Service();
Call call = (Call)service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setProperty( Call.SOAPACTION_USE_PROPERTY, new Boolean( true ) );
call.setProperty( Call.SOAPACTION_URI_PROPERTY, "http://www.webserviceX.NET/ConversionRate");
call.setEncodingStyle("utf-8");
//Invoke the WebService.
SOAPEnvelope resp = call.invoke(((org.apache.axis.SOAPPart)soapPart).getAsSOAPEnvelope());
...
//then i parse the resulting SOAPEnvelope get the value.
здесь, в этом URL, вы можете увидеть природу запроса и ответа на мыло при взаимодействии с этим веб-сервисом.
http://www.webservicex.net/CurrencyConvertor.asmx?op=ConversionRate
мой код Java выше, получите правильный и точный ответ мыла, указанный в URL, который я указал и ожидал ... но всегда со значением, которое мне нужно, равным 0
Это мыльный ответ, который я получаю:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body><ConversionRateResponse
xmlns="http://www.webserviceX.NET/">
<ConversionRateResult>0</ConversionRateResult></ConversionRateResponse>
</soap:Body></soap:Envelope>
Вы можете увидеть CoversionRateResult как 0, хотя он должен вернуть 4.69. Я попробовал другой веб-сервис, который они предоставляют, и я всегда получаю такой результат.
Может кто-нибудь помочь мне, посмотрев, что может отсутствовать в моем коде Java? Я пробовал разные варианты и продолжаю играть с днём :( .. и ничего.
Буду очень признателен, если кто-нибудь поможет мне в этом.
Спасибо,