Sample code using K-SOAP for Android.
private void sendSOAPmsg(DamageAssessmentFormPojo pojo) throws IOException, XmlPullParserException, SoapFault {
SoapObject request = new SoapObject(WEBSERVICE.NAMESPACE, WEBSERVICE.METHOD_NAME_SUBMIT_REPORT);
request.addProperty("xmlBytes", Util.getSoapBase64String(pojo));
request.addProperty("fileName", IO.DefaultReportName);
request.addProperty("deviceId", AppConstants.IMEI != null ? AppConstants.IMEI : Util.getIMEI(this));
SoapPrimitive response = sendSOAPEnvelope(request, WEBSERVICE.SOAP_ACTION_SUBMIT_REPORT);
if (response.toString().equalsIgnoreCase("true")) {
Logger.logInfo("REPORT SENT SUCCESSFULLY", "WEB-SERVICE");
pojo.setReportSent(true);
IO.writeObject(pojo.getReportsFolderPath() + IO.DefaultReportName, pojo);
} else {
Logger.logInfo("REPORT SENT FAILED", "WEB-SERVICE - RESONSE " + response.toString());
}
}
private SoapPrimitive sendSOAPEnvelope(SoapObject request, String soapAction) throws IOException, XmlPullParserException, SoapFault {
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(WEBSERVICE.URL);
androidHttpTransport.call(soapAction, envelope);
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
return response;
}
private boolean sendSOAPimage(String strImg, File pFile) throws IOException, XmlPullParserException {
boolean result = false;
if (strImg != null) {
SoapObject request = new SoapObject(WEBSERVICE.NAMESPACE, WEBSERVICE.METHOD_NAME_SUBMIT_IMAGE);
request.addProperty("imageBytes", strImg);
request.addProperty("fileName", pFile.getName());
request.addProperty("deviceId", AppConstants.IMEI != null ? AppConstants.IMEI : Util.getIMEI(this));
SoapPrimitive response = sendSOAPEnvelope(request, WEBSERVICE.SOAP_ACTION_SUBMIT_MAGE);
if (response.toString().equalsIgnoreCase("true")) {
result = true;
Logger.logInfo("IMAGE SENT SUCCESSFULLY", "WEB-SERVICE");
} else {
Logger.logInfo("IMAGE SENT FAILED", "WEB-SERVICE - RESONSE " + response.toString());
}
}
return result;
}
//———Util Helper Method
public static String getSoapBase64String(DamageAssessmentFormPojo pojo) {
XmlSerializer xmlSerializer = Xml.newSerializer();
StringWriter writer = new StringWriter();
try {
xmlSerializer.setOutput(writer);
xmlSerializer.startDocument("UTF-8", true);
xmlSerializer.startTag("", XMLTags.TAG_ROD);
xmlSerializer.startTag("", XMLTags.TAG_ORDER);
xmlSerializer.startTag("", XMLTags.TAG_SEVERITY);
xmlSerializer.text(pojo.getCheckedSeverity_Complexity());
xmlSerializer.endTag("", XMLTags.TAG_SEVERITY);
xmlSerializer.startTag("", XMLTags.TAG_DAMAGE_TYPE);
StringBuilder builder = new StringBuilder();
for (String str : pojo.getCheckedDamageTypes()) {
builder.append(str + " , ");
}
xmlSerializer.text(builder.toString());
xmlSerializer.endTag("", XMLTags.TAG_DAMAGE_TYPE);
xmlSerializer.startTag("", XMLTags.TAG_ENV_IMPACT);
xmlSerializer.text(pojo.getCheckedEnvImpact());
xmlSerializer.endTag("", XMLTags.TAG_ENV_IMPACT);
xmlSerializer.startTag("", XMLTags.TAG_ENV_COMMENT);
xmlSerializer.text(pojo.getEnvImpactComments());
xmlSerializer.endTag("", XMLTags.TAG_ENV_COMMENT);
xmlSerializer.startTag("", XMLTags.TAG_TRAVEL_CONDITION);
xmlSerializer.text(pojo.getCheckedTravelCond());
xmlSerializer.endTag("", XMLTags.TAG_TRAVEL_CONDITION);
xmlSerializer.startTag("", XMLTags.TAG_TRAVEL_COMMENT);
xmlSerializer.text(pojo.getTravCondComments());
xmlSerializer.endTag("", XMLTags.TAG_TRAVEL_COMMENT);
xmlSerializer.startTag("", XMLTags.TAG_ORDER_DATE);
xmlSerializer.text(pojo.getDateTime());
xmlSerializer.endTag("", XMLTags.TAG_ORDER_DATE);
xmlSerializer.endTag("", "Order");
xmlSerializer.endTag("", "ROD");
xmlSerializer.endDocument();
} catch (IllegalArgumentException e) {
Logger.logException(e);
} catch (IllegalStateException e) {
Logger.logException(e);
} catch (IOException e) {
Logger.logException(e);
}
return Base64.encode(writer.toString().getBytes());
}
posted 9 years ago
-
-

Number of slices to send:
Optional ‘thank-you’ note:
-
-
We have a spring-cxf ( Spring 3.0.4, CXF 2.5.10, Java 6) web service application deployed in WAS 8.0.0.7 @ Linux machine. We are able to access all services through soap ui by directly using ip on url (through Linux IP in which application installed). Now the app server is behind the Web server (iplanet, & configured by client) and now the issue comes(we are using https to hit the web server where as web server to app server is http).
We are able to see xml content in browser using the url provided by client but when we access the web service through SOAPUI we are getting «Error reading XMLStreamReader.» and following exception in WAS log
—————————————
[1/14/14 5:14:34:375 GMT] 00000040 AccDetailsInt I org.apache.cxf.services.AccountDetailsWSService.AccountDetailsWSPort.AccDetailsInt Inbound Message
—————————-
ID: 13
Address: https://{ip:port}/infox/services/AccountDetailsWSPort
Encoding: UTF-8
Http-Method: POST
Content-Type: text/xml;charset=UTF-8
Headers: {$WSCS=[SSL_RSA_WITH_RC4_128_MD5-128], $WSIS=[true], $WSPR=[HTTP/1.1], $WSRA=[10.203.118.218], $WSRH=[10.203.118.218], $WSSC=[https], $WSSI=[Q1IrQ29oeGJCMFNHRWFPNzdBYjBRSU1RNEVZd3RWSHhlVWJyRGtnaDBEWT0=], $WSSN=[ip], $WSSP=[2006], _WS_HAPRT_WLMVERSION=[-1], accept-encoding=[gzip,deflate], conten-lengtth=[1594], content-type=[text/xml;charset=UTF-8], Host=[{ip:port}], SOAPAction=[«urn:GetAccountProfile»], Surrogate-Capability=[WS-ESI=»ESI/1.0+»], User-Agent=[Apache-HttpClient/4.1.1 (java 1.5)]}
—————————————
[1/14/14 5:14:34:376 GMT] 00000040 SystemOut O Request XML :
[1/14/14 5:14:34:376 GMT] 00000040 PhaseIntercep W org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging Interceptor for {http://wsbroker.core.infx.com/}AccountDetailsWSService has thrown exception, unwinding now
org.apache.cxf.binding.soap.SoapFault: Error reading XMLStreamReader.
at org.apache.cxf.binding.soap.saaj.SAAJInInterceptor$SAAJPreInInterceptor.handleMessage(SAAJInInterceptor.java:139)
at org.apache.cxf.binding.soap.saaj.SAAJInInterceptor$SAAJPreInInterceptor.handleMessage(SAAJInInterceptor.java:102)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:122)
at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:233)
at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:214)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:194)
at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:129)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:223)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:143)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:199)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1230)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:779)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1071)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:909)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:453)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:515)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:306)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:277)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture$1.run(AsyncChannelFuture.java:205)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1700)
Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
at [row,col {unknown-source}]: [1,0]
at com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:677)
at com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2139)
at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2045)
at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1134)
at com.ctc.wstx.sr.BasicStreamReader.nextTag(BasicStreamReader.java:1157)
at org.apache.cxf.binding.soap.saaj.SAAJInInterceptor$SAAJPreInInterceptor.handleMessage(SAAJInInterceptor.java:125)
… 30 more
[1/14/14 5:14:34:412 GMT] 00000040 SystemOut O ****************************In DB LOGGIN INTERCEPTOR…DBLogOutIntercepter:Adding Logs ************************************
[1/14/14 5:14:34:417 GMT] 00000040 SystemOut O ****************************In DB LOGGIN INTERCEPTOR…DBLogOutIntercepter:Logt Added ************************************
[1/14/14 5:14:34:417 GMT] 00000040 AccDetailsInt I org.apache.cxf.services.AccountDetailsWSService.AccountDetailsWSPort.AccDetailsInt Outbound Message
—————————
ID: 13
Response-Code: 500
Encoding: UTF-8
Content-Type: text/xml
Headers: {}
Payload: <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>
——————————-
Am i missing any configurations? any help would be appreciated
thanks & regards, Harilal.A.S.
Здравствуйте всем. С помощью программки SoapUi добился успеха — данные приходят. Теперь пытаюсь это повторить из моей обработки таким кодом:
type = 1;
dateFROM = Формат(Период.ДатаНачала,»ДФ=dd.MM.yyyy»);
dateTO = Формат(Период.ДатаОкончания,»ДФ=dd.MM.yyyy»);
password = СтрЗаменить(MD5ХешСтрока(password),» «,»»);
СтрокаЗапроса = «http://ibank.trustbank.uz:225/fbCib/services/operations/action=getPaymentList»;;
WinHttp = Новый COMОбъект(«WinHttp.WinHttpRequest.5.1»);
WinHttp.Option(2,»utf-8″);
WinHttp.Open(«POST», СтрокаЗапроса, 0);
//WinHttp.SetTimeouts(10000, 10000, 10000, 10000);
//
Попытка
WinHttp.Send(«&username=»+username+»&password=»+password+»&type=»+type+»&dateFROM=»+dateFROM+»&dateTO=»+dateTO+»&accDB=»+ОбщегоНазначенияВызовСервера.ЗначениеРеквизитаОбъекта(БанкСчет,»НомерСчета»));
WinHttp.WaitForResponse();
исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
Сообщить(WinHttp.ResponseText());
Выходит ошибка: Error reading XMLStreamReader. Где что не так, указал, подскажите плз! Вперввые с этим столкнулся!
Hi,
I was trying fix for CXF-3383 from 2.3.4-snapshot from within applet & I’m getting exception as:
WARNING: Interceptor for {http:org.apache.cxf.binding.soap.SoapFault: Error reading XMLStreamReader. at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:222) at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:60) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255) at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:759) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2337) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2195) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:2039) at org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47) at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:188) at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:697) at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:520) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:317) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:269) at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124) at $Proxy42.login(Unknown Source) at com.banctec.client.commonviewer.ViewerWSServerHandler.login(ViewerWSServerHandler.java:107) at com.banctec.client.viewer.ViewerController.login(ViewerController.java:248) at com.banctec.client.viewer.EfpViewer.ensureLoggedIn(EfpViewer.java:561) at com.banctec.client.viewer.EfpViewer.startViewer(EfpViewer.java:329) at com.banctec.client.viewer.EfpViewer.start(EfpViewer.java:257) at sun.applet.AppletPanel.run(AppletPanel.java:464) at java.lang.Thread.run(Thread.java:662) Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1] Message: Content is not allowed in prolog. at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:594) at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.nextTag(XMLStreamReaderImpl.java:1235) at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:122) ... 25 more javax.xml.ws.soap.SOAPFaultException: Error reading XMLStreamReader. at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:146) at $Proxy42.login(Unknown Source) at com.banctec.client.commonviewer.ViewerWSServerHandler.login(ViewerWSServerHandler.java:107) at com.banctec.client.viewer.ViewerController.login(ViewerController.java:248) at com.banctec.client.viewer.EfpViewer.ensureLoggedIn(EfpViewer.java:561) at com.banctec.client.viewer.EfpViewer.startViewer(EfpViewer.java:329) at com.banctec.client.viewer.EfpViewer.start(EfpViewer.java:257) at sun.applet.AppletPanel.run(AppletPanel.java:464) at java.lang.Thread.run(Thread.java:662) Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1] Message: Content is not allowed in prolog. at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:594) at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.nextTag(XMLStreamReaderImpl.java:1235) at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:122) at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:60) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255) at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:759) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2337) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2195) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:2039) at org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47) at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:188) at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:697) at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:520) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:317) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:269) at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124) ... 8 more javax.xml.ws.soap.SOAPFaultException: Error reading XMLStreamReader. at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:146) at $Proxy42.login(Unknown Source) at com.banctec.client.commonviewer.ViewerWSServerHandler.login(ViewerWSServerHandler.java:107) at com.banctec.client.viewer.ViewerController.login(ViewerController.java:248) at com.banctec.client.viewer.EfpViewer.ensureLoggedIn(EfpViewer.java:561) at com.banctec.client.viewer.EfpViewer.startViewer(EfpViewer.java:329) at com.banctec.client.viewer.EfpViewer.start(EfpViewer.java:257) at sun.applet.AppletPanel.run(AppletPanel.java:464) at java.lang.Thread.run(Thread.java:662) Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1] Message: Content is not allowed in prolog. at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:594) at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.nextTag(XMLStreamReaderImpl.java:1235) at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:122) at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:60) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255) at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:759) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2337) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2195) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:2039) at org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47) at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:188) at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:697) at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:520) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:317) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:269) at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124) ... 8 more
When I looked at messages, I found:
16-Mar-2011 17:22:45 org.apache.cxf.interceptor.AbstractLoggingInterceptor log INFO: Outbound Message --------------------------- ID: 1 Address: http:Encoding: UTF-8 Content-Type: multipart/related; type="application/xop+xml"; boundary="uuid:8ed5984d-00d9-42f2-8a93-8cec2c17a184"; start="<root.message@cxf.apache.org>"; start-info="text/xml" Headers: {Accept=[*/*], SOAPAction=[""]} Payload: --uuid:8ed5984d-00d9-42f2-8a93-8cec2c17a184 Content-Type: application/xop+xml; charset=UTF-8; type="text/xml"; Content-Transfer-Encoding: binary Content-ID: <root.message@cxf.apache.org> <soap:Envelope xmlns:soap="http:><soap:Body><ns1:login xmlns:ns1="http://wsapi.api.client.caseware.banctec.com/"><appServerUrl>jnp://localhost:1099</appServerUrl><userName>efpadmin</userName><password>efpadmin</password></ns1:login></soap:Body></soap:Envelope> --uuid:8ed5984d-00d9-42f2-8a93-8cec2c17a184-- -------------------------------------- 16-Mar-2011 17:22:45 org.apache.cxf.interceptor.AbstractLoggingInterceptor log INFO: Inbound Message ---------------------------- ID: 1 Response-Code: -1 Encoding: ISO-8859-1 Content-Type: unknown/unknown Headers: {Content-type=[unknown/unknown]} Payload: ??All??_?w?Dv?s?6?P?????bx?????????O??(yVO??@58_?? -------------------------------------- 16-Mar-2011 17:22:45 org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging
This works from a standalone client, but when I call it from applet, it throws above error. Also, this works for cxf-2.2.6.jar, it’s only when I was trying fix for issue CXF-3383 with 2.3.4-snapshot, I got it. Do you have any idea anything being changed from 2.2.6 that I need to take care in 2.3.4? All, the jars are signed so I can’t imagin applet security blocking it (also the fact that it was working with 2.2.6).
If you’re using any of these tools for Web Services – Axis2, CXF etc. – that internally make use of Woodstox XML processor (wstx), and you’re getting an exception like this during webservice calls,
javax.xml.ws.soap.SOAPFaultException: Error reading XMLStreamReader.
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:...)
...
Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character ...
at com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:...)
at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:...)
at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:...)
at com.ctc.wstx.sr.BasicStreamReader.nextTag(BasicStreamReader.java:...)
the problem is that the wstx tokenizer/parser encountered unexpected
(but not necessarily invalid per se) character; character that is not
legal in current context. Could happen, for example, if white space was
missing between attribute value and name of next attribute, according to
API docs (http://woodstox.codehaus.org/3.2.9/javadoc/com/ctc/wstx/exc/WstxUnexpectedCharException.html).
This simply means that you’re receiving an ill-formed SOAP XML as response. You need to check the SOAP response construction logic/code at the other end you’re communicating to.
XML
Attribute (computing)
SOAP
Web Protocols
Web Service
Apache Axis2
Doc (computing)
API
Space (architecture)
Пример кода с использованием K-SOAP для Android.
private void sendSOAPmsg(DamageAssessmentFormPojo pojo) throws IOException, XmlPullParserException, SoapFault {
SoapObject request = new SoapObject(WEBSERVICE.NAMESPACE, WEBSERVICE.METHOD_NAME_SUBMIT_REPORT);
request.addProperty("xmlBytes", Util.getSoapBase64String(pojo));
request.addProperty("fileName", IO.DefaultReportName);
request.addProperty("deviceId", AppConstants.IMEI != null ? AppConstants.IMEI : Util.getIMEI(this));
SoapPrimitive response = sendSOAPEnvelope(request, WEBSERVICE.SOAP_ACTION_SUBMIT_REPORT);
if (response.toString().equalsIgnoreCase("true")) {
Logger.logInfo("REPORT SENT SUCCESSFULLY", "WEB-SERVICE");
pojo.setReportSent(true);
IO.writeObject(pojo.getReportsFolderPath() + IO.DefaultReportName, pojo);
} else {
Logger.logInfo("REPORT SENT FAILED", "WEB-SERVICE - RESONSE " + response.toString());
}
}
private SoapPrimitive sendSOAPEnvelope(SoapObject request, String soapAction) throws IOException, XmlPullParserException, SoapFault {
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(WEBSERVICE.URL);
androidHttpTransport.call(soapAction, envelope);
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
return response;
}
private boolean sendSOAPimage(String strImg, File pFile) throws IOException, XmlPullParserException {
boolean result = false;
if (strImg != null) {
SoapObject request = new SoapObject(WEBSERVICE.NAMESPACE, WEBSERVICE.METHOD_NAME_SUBMIT_IMAGE);
request.addProperty("imageBytes", strImg);
request.addProperty("fileName", pFile.getName());
request.addProperty("deviceId", AppConstants.IMEI != null ? AppConstants.IMEI : Util.getIMEI(this));
SoapPrimitive response = sendSOAPEnvelope(request, WEBSERVICE.SOAP_ACTION_SUBMIT_MAGE);
if (response.toString().equalsIgnoreCase("true")) {
result = true;
Logger.logInfo("IMAGE SENT SUCCESSFULLY", "WEB-SERVICE");
} else {
Logger.logInfo("IMAGE SENT FAILED", "WEB-SERVICE - RESONSE " + response.toString());
}
}
return result;
}
//———Вспомогательный метод Util
public static String getSoapBase64String(DamageAssessmentFormPojo pojo) {
XmlSerializer xmlSerializer = Xml.newSerializer();
StringWriter writer = new StringWriter();
try {
xmlSerializer.setOutput(writer);
xmlSerializer.startDocument("UTF-8", true);
xmlSerializer.startTag("", XMLTags.TAG_ROD);
xmlSerializer.startTag("", XMLTags.TAG_ORDER);
xmlSerializer.startTag("", XMLTags.TAG_SEVERITY);
xmlSerializer.text(pojo.getCheckedSeverity_Complexity());
xmlSerializer.endTag("", XMLTags.TAG_SEVERITY);
xmlSerializer.startTag("", XMLTags.TAG_DAMAGE_TYPE);
StringBuilder builder = new StringBuilder();
for (String str : pojo.getCheckedDamageTypes()) {
builder.append(str + " , ");
}
xmlSerializer.text(builder.toString());
xmlSerializer.endTag("", XMLTags.TAG_DAMAGE_TYPE);
xmlSerializer.startTag("", XMLTags.TAG_ENV_IMPACT);
xmlSerializer.text(pojo.getCheckedEnvImpact());
xmlSerializer.endTag("", XMLTags.TAG_ENV_IMPACT);
xmlSerializer.startTag("", XMLTags.TAG_ENV_COMMENT);
xmlSerializer.text(pojo.getEnvImpactComments());
xmlSerializer.endTag("", XMLTags.TAG_ENV_COMMENT);
xmlSerializer.startTag("", XMLTags.TAG_TRAVEL_CONDITION);
xmlSerializer.text(pojo.getCheckedTravelCond());
xmlSerializer.endTag("", XMLTags.TAG_TRAVEL_CONDITION);
xmlSerializer.startTag("", XMLTags.TAG_TRAVEL_COMMENT);
xmlSerializer.text(pojo.getTravCondComments());
xmlSerializer.endTag("", XMLTags.TAG_TRAVEL_COMMENT);
xmlSerializer.startTag("", XMLTags.TAG_ORDER_DATE);
xmlSerializer.text(pojo.getDateTime());
xmlSerializer.endTag("", XMLTags.TAG_ORDER_DATE);
xmlSerializer.endTag("", "Order");
xmlSerializer.endTag("", "ROD");
xmlSerializer.endDocument();
} catch (IllegalArgumentException e) {
Logger.logException(e);
} catch (IllegalStateException e) {
Logger.logException(e);
} catch (IOException e) {
Logger.logException(e);
}
return Base64.encode(writer.toString().getBytes());
}
I am trying to use CheckInAAF through the soap based Interplay Web Service but I keep getting «Error Reading XMLStreamReader»
I am using the Example TestSequence1.aaf that comes with interplay to be sure that I am using a valid aaf file.
file_path = "C:JEFFS_STUFFAVIDAVIDExampleTestSequence1.aaf"
httpResponse => [<httplib.HTTPResponse instance at 0x00000000022CBB08>]
httpResponseHeaders => [[‘Server: Apache-Coyote/1.1rn’, ‘Content-Type: text/xml;charset=UTF-8rn’, ‘Content-Length: 225rn’, ‘Date: Thu, 23 Mar 2017 13:52:26 GMTrn’, ‘Connection: closern’]]
httpResponseMsg => [Server: Apache-Coyote/1.1
Content-Type: text/xml;charset=UTF-8
Content-Length: 225
Date: Thu, 23 Mar 2017 13:52:26 GMT
Connection: close
]
httpResponseStatus => [500]
httpResponseReason [Internal Server Error]
httpResponse [<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>]
And here is the body of the message that I am sending
MESSAGE LENGTH [213755]
MESSAGE [—-MIMEBoundary123456
content-id: <1.123456@example.org>
content-type: application/xop+xml; charset=utf-8; type=»text/xml; charset=utf-8″
content-transfer-encoding: binary
<soapenv:Envelope xmlns:soapenv=»http://schemas.xmlsoap.org/soap/envelope/» xmlns:typ=»http://avid.com/interplay/ws/assets/types»>
<x:Header>
<typ:UserCredentials>
<typ:Username>evertz</typ:Username>
<typ:Password>evertz1</typ:Password>
<typ:Extension/>
</typ:UserCredentials>
</x:Header>
<soapenv:Body>
<typ:CheckInAAF>
<typ:InterplayURI>interplay://EvertzWorkgroup/Projects/JEFFK</typ:InterplayURI>
<AAF>
<xop:Include href=»cid:1.123456@example.org»/>
</AAF>
<Attributes>
<Attribute Group=»USER» Name=»Camera Man»>John Smith</Attribute>
</Attributes>
</typ:CheckInAAF>
</soapenv:Body>
</soapenv:Envelope>
—-MIMEBoundary123456
content-id: <1.123456@example.org>
content-type: application/octet-stream
content-transfer-encoding: binary
============= content clipped for readability purposes ===============
—-MIMEBoundary123456—
]