我用PHP写了个webservice,然后用java来进行测试!结果出现以下异常:Exception in thread "main" AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: org.xml.sax.SAXParseException: Invalid byte 2 of 2-byte UTF-8 sequence.
 faultActor: 
 faultNode: 
 faultDetail: 
{http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXParseException: Invalid byte 2 of 2-byte UTF-8 sequence.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:236)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:215)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:386)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:316)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1810)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at src.Test.main(Test.java:30) {http://xml.apache.org/axis/}hostname:china-70aa81fbborg.xml.sax.SAXParseException: Invalid byte 2 of 2-byte UTF-8 sequence.
at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:701)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at src.Test.main(Test.java:30)
Caused by: org.xml.sax.SAXParseException: Invalid byte 2 of 2-byte UTF-8 sequence.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:236)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:215)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:386)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:316)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1810)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
... 9 more
请问这是为什么啊!原因在哪里呢!?我的PHP的版本是5.0以下版本的!我的测试代码如下:        String endpoint = "http://localhost/WebService/myWebService.php"; 
        Service service = new Service();
        Call call = (Call) service.createCall();
        call.setTargetEndpointAddress(new java.net.URL(endpoint));
        call.setEncodingStyle("UTF-8");
        call.setOperationName("getMinfo");
        System.out.println("execute to here!");        String param = new String("中文".getBytes(),"ISO-8859-1");
        System.out.println("execute to here 2!");
        String s = (String) call.invoke(new Object[] {param});
        System.out.println("execute to here 3!");
        s = new String(s.getBytes("ISO-8859-1"),"GBK");
        System.out.println(s);
请各位好心的大侠帮帮我吧!先谢谢了!

解决方案 »

  1.   

    java的不是很明白:不过这一句好像不太对:
    String endpoint = "http://localhost/WebService/myWebService.php"; 
    ---------------------------------------------------------------------
    应改为:
    String endpoint = "http://localhost/WebService/myWebService.php?wsdl";这有一个PHP的例子希望对你有用:http://www.phpchina.com/home/space.php?uid=29824&do=blog&id=35510
      

  2.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【yuanpolo】截止到2008-07-24 10:46:14的历史汇总数据(不包括此帖):
    发帖的总数量:17                       发帖的总分数:656                      每贴平均分数:38                       
    回帖的总数量:29                       得分贴总数量:5                        回帖的得分率:17%                      
    结贴的总数量:16                       结贴的总分数:556                      
    无满意结贴数:2                        无满意结贴分:70                       
    未结的帖子数:1                        未结的总分数:100                      
    结贴的百分比:94.12 %               结分的百分比:84.76 %                  
    无满意结贴率:12.50 %               无满意结分率:12.59 %                  
    值得尊敬
      

  3.   

    你的服务是发布成功的吗?
    在地址栏输入:http://ip:端口/WebService/myWebService?wsdl
    可以看到打开的xml文件吗?如果看到说明服务成功。
    ----------
    你上面描述的String endpoint = "http://localhost/WebService/myWebService.php"; 
    怎么没有端口?
    ----------