首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

调用webservice出错。待高手

2013-11-08 
调用webservice出错。。。。在线等待高手完整类;package com.creaway.blackout.scheduleimport java.net.Malf

调用webservice出错。。。。在线等待高手
完整类;
package com.creaway.blackout.schedule;

import java.net.MalformedURLException;
import java.rmi.RemoteException;

import javax.xml.rpc.ServiceException;
import javax.xml.namespace.QName;

public class test {

static org.apache.axis.client.Call call=null;
static java.net.URL url=null;
static Object o = null;

static{
try {
url=new java.net.URL("http://10.96.0.216:9734/2EC66A60-24CF-0131-983C-00505696004F?wsdl");
} catch (MalformedURLException e) {
e.printStackTrace();
}
}


//调用接口
public static String getjkXML(String strXML){
try {
org.apache.axis.client.Service service =new org.apache.axis.client.Service();
call = (org.apache.axis.client.Call) service.createCall();
call.setTargetEndpointAddress(url);
call.setOperationName(new QName("http://www.tbi.ydtf.com.cn/","exec"));
call.addParameter("Request", org.apache.axis.Constants.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
call.setReturnType(org.apache.axis.Constants.XSD_STRING);
o = call.invoke(new Object[]{strXML}); 
 System.out.println(o);
} catch (ServiceException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}
return o.toString();
}

public static void main(String[] args) {
String strXML="<?xml version="1.0" encoding="UTF-8"?><RESULT><ZDHXXS><ZDHXX><DYBM>182</DYBM><TDJSRQ>20131106</TDJSRQ><SBBH>10000790</SBBH><JLDH>8077214</JLDH><XLBH>14584</XLBH><TDKSRQ>20131106</TDKSRQ><TDJSSJ>073000</TDJSSJ><YHBH>3000232264</YHBH><TDXC>1</TDXC><TDSC>270</TDSC><JGBM>302</JGBM><ZDBH>63000458</ZDBH><TDKSSJ>030000</TDKSSJ><SBBZ>2</SBBZ><PCBH>520</PCBH></ZDHXX><RECORDCOUNT>1</RECORDCOUNT></ZDHXXS></RESULT>";
System.out.println(getjkXML(strXML));
}
}
错误信息:
AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: org.xml.sax.SAXException: Bad envelope tag:  definitions
 faultActor: 
 faultNode: 
 faultDetail: 
{http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXException: Bad envelope tag:  definitions
at org.apache.axis.message.EnvelopeBuilder.startElement(EnvelopeBuilder.java:71)
at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048)
at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
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 com.creaway.blackout.schedule.test.getjkXML(test.java:33)
at com.creaway.blackout.schedule.test.main(test.java:45)

{http://xml.apache.org/axis/}hostname:chuangwe-c432c6

org.xml.sax.SAXException: Bad envelope tag:  definitions
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 com.creaway.blackout.schedule.test.getjkXML(test.java:33)
at com.creaway.blackout.schedule.test.main(test.java:45)
Caused by: org.xml.sax.SAXException: Bad envelope tag:  definitions


at org.apache.axis.message.EnvelopeBuilder.startElement(EnvelopeBuilder.java:71)
at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048)
at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
... 10 more
Exception in thread "main" java.lang.NullPointerException
at com.creaway.blackout.schedule.test.getjkXML(test.java:40)
at com.creaway.blackout.schedule.test.main(test.java:45)
java
[解决办法]
http://10.96.0.216:9734/2EC66A60-24CF-0131-983C-00505696004F?wsdl去掉?wsdl试试
[解决办法]
1、先测试URL 是否正确。
2、如果正确的,把call.addParameter("Request", org.apache.axis.Constants.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);
call.setReturnType(org.apache.axis.Constants.XSD_STRING);

这两行给注释掉 看看。
[解决办法]
你xml格式不对把 。我没法测试。给你个参照 
[解决办法]
你用的XFire还是CXF的框架??还是其他?
wsdl是给webservice工具使用的,其作用是用来生成代码,不同的工具生成出来的代码打包后可以当作工具类来使用,直接使用wsdl是不能作为WebService的访问地址的。

Endpoint在WSDL中会有描述,但是非常不好读,毕竟它只是一份说明文件,如果LZ用的是CXF,可以尝试用他的工具接续wsdl导出代码,如果WebService是你自己写的话,看你的配置中的Endpoint地址是多少
[解决办法]
不是让你去掉wsdl,你用你的WEbService框架的工具去解析wsdl,生成出源代码来
[解决办法]


<?xml version='1.0' encoding='UTF-8'?><wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://passage.soap.infrastructure.dls.fytech.net/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" name="passage" targetNamespace="http://passage.soap.infrastructure.dls.fytech.net/">
  <wsdl:types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://passage.soap.infrastructure.dls.fytech.net/" elementFormDefault="unqualified" targetNamespace="http://passage.soap.infrastructure.dls.fytech.net/" version="1.0">
<xs:element name="casLogin" type="tns:casLogin"/>
<xs:element name="casLoginResponse" type="tns:casLoginResponse"/>
<xs:element name="logout" type="tns:logout"/>
<xs:element name="logoutResponse" type="tns:logoutResponse"/>
<xs:complexType name="casLogin">
    <xs:sequence>
      <xs:element minOccurs="0" name="arg0" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
<xs:complexType name="casLoginResponse">
    <xs:sequence>
      <xs:element minOccurs="0" name="return" type="tns:passageDTO"/>
    </xs:sequence>
  </xs:complexType>
<xs:complexType name="passageDTO">
    <xs:sequence>
      <xs:element name="admin" type="xs:boolean"/>
      <xs:element minOccurs="0" name="applicationId" type="xs:string"/>
      <xs:element minOccurs="0" name="code" type="xs:string"/>
      <xs:element minOccurs="0" name="email" type="xs:string"/>
      <xs:element minOccurs="0" name="environmentId" type="xs:string"/>
      <xs:element minOccurs="0" name="environmentName" type="xs:string"/>
      <xs:element minOccurs="0" name="groupId" type="xs:string"/>
      <xs:element minOccurs="0" name="id" type="xs:string"/>
      <xs:element minOccurs="0" name="name" type="xs:string"/>
      <xs:element minOccurs="0" name="orgName" type="xs:string"/>


      <xs:element minOccurs="0" name="password" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
<xs:complexType name="logout">
    <xs:sequence>
      <xs:element minOccurs="0" name="arg0" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
<xs:complexType name="logoutResponse">
    <xs:sequence/>
  </xs:complexType>
</xs:schema>
  </wsdl:types>
  <wsdl:message name="casLoginResponse">
    <wsdl:part element="tns:casLoginResponse" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="logout">
    <wsdl:part element="tns:logout" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="casLogin">
    <wsdl:part element="tns:casLogin" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="logoutResponse">
    <wsdl:part element="tns:logoutResponse" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:portType name="IPassageSOAPService">
    <wsdl:operation name="casLogin">
      <wsdl:input message="tns:casLogin" name="casLogin">
    </wsdl:input>
      <wsdl:output message="tns:casLoginResponse" name="casLoginResponse">
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="logout">
      <wsdl:input message="tns:logout" name="logout">
    </wsdl:input>
      <wsdl:output message="tns:logoutResponse" name="logoutResponse">
    </wsdl:output>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="passageSoapBinding" type="tns:IPassageSOAPService">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="casLogin">
      <soap:operation soapAction="" style="document"/>
      <wsdl:input name="casLogin">
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output name="casLoginResponse">
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="logout">
      <soap:operation soapAction="" style="document"/>
      <wsdl:input name="logout">
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output name="logoutResponse">
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="passage">
    <wsdl:port binding="tns:passageSoapBinding" name="IPassageSOAPServicePort">
      <soap:address location="http://demo.crd.fytech.net/dls/services/passageLogin"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>


这是一份WSDL,由CXF生成出来的,刚好

<soap:address location="http://demo.crd.fytech.net/dls/services/passageLogin"/>

指向的正是Endpoint
[解决办法]
试一下调用getjkXML()方法不带参数,把o = call.invoke(new Object[]{strXML}); 改成 String temp = "测试";String o = (String)call.invoke(new Object[]{temp});  看看结果会怎样
[解决办法]
引用:
Quote: 引用:

你用的XFire还是CXF的框架??还是其他?
wsdl是给webservice工具使用的,其作用是用来生成代码,不同的工具生成出来的代码打包后可以当作工具类来使用,直接使用wsdl是不能作为WebService的访问地址的。

Endpoint在WSDL中会有描述,但是非常不好读,毕竟它只是一份说明文件,如果LZ用的是CXF,可以尝试用他的工具接续wsdl导出代码,如果WebService是你自己写的话,看你的配置中的Endpoint地址是多少

wsdl我早去了,看看中间帖子在发表

表示楼主态度有问题
[解决办法]
引用:
Quote: 引用:

试一下调用getjkXML()方法不带参数,把o = call.invoke(new Object[]{strXML}); 改成 String temp = "测试";String o = (String)call.invoke(new Object[]{temp});  看看结果会怎样



org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.同样的错
call.addParameter("Request", org.apache.axis.Constants.XSD_STRING, javax.xml.rpc.ParameterMode.IN);这句是接口的参数,但是不知道你的Request是什么。

热点排行