摘要:最近在协助同事搞Android调用WebService接口,再测试的过程中发现老师报错,经过baidu,google,终于解决了,现在记录一下:


一:错误信息:

2015-10-28 18:50:39 org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging警告: Interceptor for {http://service.qdexam.com/}HelloServiceImplService#{http://service.qdexam.com/}say has thrown exception, unwinding noworg.apache.cxf.interceptor.Fault: Unmarshalling Error: unexpected element (uri:"http://service.qdexam.com/", local:"name"). Expected elements are <{}name>     at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:882)    at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:703)    at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:160)    at org.apache.cxf.wsdl.interceptors.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:108)    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)    at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)    at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:243)    at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223)    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:197)    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)    at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:171)    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:206)    at javax.servlet.http.HttpServlet.service(HttpServlet.java:643)    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262)    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:620)    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)    at java.lang.Thread.run(Thread.java:662)Caused by: javax.xml.bind.UnmarshalException - with linked exception:[javax.xml.bind.UnmarshalException: unexpected element (uri:"http://service.qdexam.com/", local:"name"). Expected elements are <{}name>]    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:425)    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:362)    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:339)    at org.apache.cxf.jaxb.JAXBEncoderDecoder.doUnmarshal(JAXBEncoderDecoder.java:843)    at org.apache.cxf.jaxb.JAXBEncoderDecoder.access$100(JAXBEncoderDecoder.java:102)    at org.apache.cxf.jaxb.JAXBEncoderDecoder$2.run(JAXBEncoderDecoder.java:871)    at java.security.AccessController.doPrivileged(Native Method)    at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:869)    ... 26 moreCaused by: javax.xml.bind.UnmarshalException: unexpected element (uri:"http://service.qdexam.com/", local:"name"). Expected elements are <{}name>    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:642)    at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:254)    at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:249)    at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Loader.java:116)    at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.childElement(Loader.java:101)    at com.sun.xml.bind.v2.runtime.unmarshaller.StructureLoader.childElement(StructureLoader.java:243)    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:478)    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:459)    at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleStartElement(StAXStreamConnector.java:242)    at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:176)    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:360)    ... 32 moreCaused by: javax.xml.bind.UnmarshalException: unexpected element (uri:"http://service.qdexam.com/", local:"name"). Expected elements are <{}name>    ... 43 more


二:正确的Android调用WebService接口代码,这里是一个登陆的例子:

package com.qdexam.service;import java.io.IOException;import org.ksoap2.SoapEnvelope;import org.ksoap2.serialization.SoapObject;import org.ksoap2.serialization.SoapSerializationEnvelope;import org.ksoap2.transport.HttpTransportSE;import org.xmlpull.v1.XmlPullParserException;import android.test.AndroidTestCase;public class MyTest extends AndroidTestCase {// 命名空间    String nameSpace3="http://myUseIos/";    // WSDL    String WSDL3="http://192.168.1.103:8080/qdksptCxfService/ksptService";    // 接口名称    String studentLogin="studentLogin";        // 登录    public void studentLogin() {    HttpTransportSE httpTranstation=new HttpTransportSE(WSDL3);    SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);    SoapObject request =new SoapObject(nameSpace3,studentLogin);    String userName = "7777777777";// 参数    String password = "7777777777";// 参数    request.addProperty("userName", userName);    request.addProperty("password", password);    envelope.setOutputSoapObject(request);    try {    httpTranstation.call(null, envelope);    Object object = envelope.getResponse();    System.out.println("object" + object);      } catch (IOException e) {    e.printStackTrace();    } catch (XmlPullParserException e) {    e.printStackTrace();    }     }    }



更多相关文章

  1. Android(安卓)开发笔记 第三季 FragmentPagerAdapter
  2. 如何在代码里打开Android手机通知状态栏
  3. android系统学习笔记八
  4. Android之jni深入
  5. android之mainfest 参数解说
  6. Android(安卓)源码 图形系统之请求布局
  7. Android(安卓)DownloadProvider分析
  8. 111111111
  9. Android(安卓)FrameWork——Binder机制详解

随机推荐

  1. Android(安卓)Path的使用
  2. Android重启应用程序代码
  3. android 杀进程方法
  4. android本地音乐播放(一)
  5. Android(安卓)发送无序广播
  6. android 工程源码下编译 Android.mk写法
  7. Android中HandlerThread的使用
  8. 15、android 常用文件路径备忘
  9. android 安装配置
  10. android 自定义view 不执行 ondraw的解决