gpt4 book ai didi

java - 基于java的soap请求总是返回soap响应,其中0作为我需要的值

转载 作者:太空宇宙 更新时间:2023-11-04 08:21:38 25 4
gpt4 key购买 nike

我正在尝试向开放的网络服务(webserviceX.NET 货币转换器)发送 SOAP 请求。这是我的代码:

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 中,您可以看到与此 Web 服务交互时 SOAP 请求和响应的性质。 http://www.webservicex.net/CurrencyConvertor.asmx?op=ConversionRate

我上面的java代码,获得我提供的和预期的URL中指定的正确且准确的soap响应..但始终将我需要的值设置为0。这是我得到的 SOAP react :

<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>

您可以看到 CoverionRateResult 为 0,尽管它应该返回 4.69。我尝试了他们提供的另一个网络服务,得到了这样的结果。

有人可以帮我看看我的 java 代码中可能缺少什么吗?我尝试了不同的变化,并从一天开始就一直在玩:( ..但什么也没有。我真的很感激任何人在这方面帮助我。谢谢,

最佳答案

在我上面的示例中传递的正确字符串是:

String SOAP_REQUEST = 
"<soapenv:Envelope
xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"
xmlns:web=\"http://www.webserviceX.NET/\">
<soapenv:Header/>
<soapenv:Body>
<web:ConversionRate>
<web:FromCurrency>EUR</web:FromCurrency>
<web:ToCurrency>ILS</web:ToCurrency>
</web:ConversionRate>
</soapenv:Body></soapenv:Envelope>"

以防万一有人遇到这个问题..我的声誉不允许我将其标记为正确。非常感谢 mcfinnigan 帮助我..

关于java - 基于java的soap请求总是返回soap响应,其中0作为我需要的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9428703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com