javax.xml.ws.Seife.SOAPFaultException beim Aufruf web-service
Habe ich einen Web-Service-Client in eclipse, Apache CXF 2.x aus der folgenden WSDL:
https://test.timbrado.com.mx/cfdi/wstimbrado.asmx?WSDL
Wenn man den web-service-Aufruf bekomme ich folgende Fehlermeldung stacktrace (Der server kann nicht verarbeiten, die Anfrage ---> Referenz auf Objekt, nicht als ein Objekt Instanz):
javax.xml.ws.soap.SOAPFaultException: El servidor no puede procesar la solicitud. ---> Referencia a objeto no establecida como instancia de un objeto.
[java] at com.sun.xml.internal.ws.fault.SOAP11Fault.getProtocolException(Unknown Source)
[java] at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(Unknown Source)
[java] at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source)
[java] at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source)
[java] at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(Unknown Source)
[java] at $Proxy34.generaTimbre(Unknown Source)
[java] at com.vital.fevital.funciones.FacturaElectronica.timbrarWebService(FacturaElectronica.java:1258)
[java] at facturaVital.factura.servlet.FacturaVenta.generaFactura(FacturaVenta.java:1128)
[java] at facturaVital.factura.servlet.FacturaVenta.doPost(FacturaVenta.java:127)
[java] at facturaVital.factura.servlet.FacturaVenta.doGet(FacturaVenta.java:86)
[java] at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
[java] at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
[java] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:306)
[java] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
[java] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
[java] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
[java] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
[java] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
[java] at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
[java] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
[java] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:383)
[java] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
[java] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
[java] at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)
[java] at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
[java] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
[java] at java.lang.Thread.run(Unknown Source)
Den Anruf, ich mache es so:
ObjectFactory of = new ObjectFactory();
AuthenticationHeader ah = of.createAuthenticationHeader();
ah.setUserName(cfdi.getUsuarioPAC());
ah.setPassword(cfdi.getPasswordPAC());
JAXBElement<AuthenticationHeader> jah = of.createAuthenticationHeader(ah);
ServicioTimbradoPruebas stp = new ServicioTimbradoPruebas();
ServicioTimbradoPruebasSoap stpSoap = stp.getServicioTimbradoPruebasSoap();
try{
WSBindingProvider bp = (WSBindingProvider)stpSoap;
Header hdr = Headers.create((JAXBRIContext) JAXBContext.newInstance(AuthenticationHeader.class),jah);
bp.setOutboundHeaders(hdr);
}catch(Exception ex){
ex.printStackTrace();
error = "Error en webservice ";
}
byte [] xmlBytes = cfdi.getXml().getBytes("UTF-8");
String result = stpSoap.generaTimbre(xmlBytes);
Den Fehler bekomme ich es in die folgende Zeile:
String result = stpSoap.generaTimbre(xmlBytes);
Bevor ich in der Lage zu tun, die web-service-Aufruf, aber jetzt bin ich nicht in der Lage, es zu tun, und bekomme ich die folgende Fehlermeldung. Irgendwelche Vorschläge, wie ich dieses problem lösen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, das wird nicht viel von einer Antwort, aber trotzdem:
Dienstleistung, die ernsthaft f** bis.
Beispielsweise
in
ist optional nach den WSDL-Vertrag:
(beachten Sie die minOccurs="0" !)
Doch wenn Sie eine Nachricht senden, ohne die optional Teil, erhalten Sie ein soapfault:
Wie ich am Anfang gesagt, es ist nicht viel von einer Antwort, nur ein Tipp vielleicht: versuche zu bleiben Weg von so schlecht geschrieben-Dienste. (Meine Vermutung ist, dass Sie versucht zu implementieren ws-sec, aber ohne die ws-policy-framework, das getan werden kann,, aber geben wenig oder überhaupt keine Hilfe zu den service-consumer auf, wie Sie es richtig verwenden)