【发布时间】:2020-12-24 18:56:31
【问题描述】:
我正在尝试调用 SOAP 网络服务来验证增值税代码。该代码在 Eclipse 中工作,但是当我从 JDeveloper 10.1.3 调用相同的代码时,我遇到了故障字符串,因为我需要将它与我的其余 Oracle EBS 代码集成。我真的很困惑,正在寻找解决错误的建议。
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault>
<faultcode>soap:Client</faultcode>
<faultstring>Error reading XMLStreamReader.</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
Process exited with exit code 0.
代码sn-p:
package xxtest.vatvalidation.;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLStreamHandler;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.MimeHeaders;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPConnection;
import javax.xml.soap.SOAPConnectionFactory;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPPart;
import org.w3c.dom.NodeList;
public class VATValidationTest {
public static void main(String[] args) throws Exception {
String url = "http://ec.europa.eu/taxation_customs/vies/services/checkVatService";
SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
SOAPConnection soapConnection = soapConnectionFactory.createConnection();
URL endpoint = new URL(null, url, new URLStreamHandler() {
protected URLConnection openConnection(URL url) throws IOException {
URL clone = new URL(url.toString());
URLConnection connection = null;
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(<proxy address>, <proxy port>));
connection = clone.openConnection(proxy);
return connection; } });
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage soapMessage = messageFactory.createMessage();
SOAPPart soapPart = soapMessage.getSOAPPart();
SOAPEnvelope envelope = soapPart.getEnvelope();
String serverURI = "urn:ec.europa.eu:taxud:vies:services:checkVat:types";
envelope.addNamespaceDeclaration("urn", serverURI);
SOAPBody soapBody = envelope.getBody();
SOAPElement soapBodyElem = soapBody.addChildElement("checkVat", "urn");
soapBodyElem.addChildElement("countryCode", "urn").addTextNode("NL");
SOAPElement soapBodyElem2 = soapBodyElem.addChildElement("vatNumber", "urn");
soapBodyElem2.addTextNode("NL999999999");
MimeHeaders headers = soapMessage.getMimeHeaders();
headers.addHeader("SOAPAction", serverURI + "#checkVat");
soapMessage.saveChanges();
soapMessage.writeTo(System.out);
SOAPMessage soapResponse = soapConnection.call(soapMessage, endpoint);
//NodeList nList = soapResponse.getSOAPBody().getElementsByTagName("valid");
soapResponse.writeTo(System.out);
soapConnection.close();
}
}
【问题讨论】:
标签: java web-services soap