java webservice wsimport 无法将名称 'soapenc:Array' 解析为 'type definition' 组件 时对应的解决方法
2018-06-01 18:33
573 查看
(一):代码如下:
package com.enso.uploaddata; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.junit.Test; import javax.xml.namespace.QName; import javax.xml.rpc.ParameterMode; import javax.xml.rpc.encoding.XMLType; /** * nanjin enso projects * * @author: Mr. Wang * @create: 2018-06-2018/6/1 * @description: */ public class testWebService { @Test public void testWebService () throws Exception{ String url = "http://106.37.208.228:8083/ForecastService.asmx?WSDL" ; //创建客户端调用webservice的代理对象 Service service = new Service(); try { //创建一个调用对象,代表对web service 的一次调用 Call call = (Call) service.createCall(); //设置web service的url 地址 call.setTargetEndpointAddress(new java.net.URL(url)); //设置操作名称,QName 对象的两个参数分别为命名空间和方法名称 call.setOperationName(new QName("http://tempuri.org/","UploadProvinceData")); //不加这行会抛异常System.Web.Services.Protocols.SoapException: 服务器未能识别 HTTP 头 SOAPAction 的值: call.setSOAPActionURI("http://tempuri.org/UploadProvinceData"); //传参 call.addParameter(new QName("http://tempuri.org/", "loginName"), XMLType.XSD_STRING, ParameterMode.IN); call.addParameter(new QName("http://tempuri.org/", "password"), XMLType.XSD_STRING, ParameterMode.IN); call.addParameter(new QName("http://tempuri.org/", "forecastInfo"), XMLType.XSD_STRING, ParameterMode.IN); call.addParameter(new QName("http://tempuri.org/", "warningInfo"), XMLType.XSD_STRING, ParameterMode.IN); call.addParameter(new QName("http://tempuri.org/", "healthTip"), XMLType.XSD_STRING, ParameterMode.IN); call.addParameter(new QName("http://tempuri.org/", "moreInfo"), XMLType.XSD_STRING, ParameterMode.IN); call.addParameter(new QName("http://tempuri.org/", "moreInfoGraphName"), XMLType.XSD_STRING, ParameterMode.IN); call.addParameter(new QName("http://tempuri.org/", "moreInfoGraphBytes"), XMLType.XSD_BASE64, ParameterMode.IN); call.addParameter(new QName("http://tempuri.org/", "isFormGraph"), XMLType.XSD_STRING, ParameterMode.IN); call.addParameter(new QName("http://tempuri.org/", "formOrSceneryGraphName"), XMLType.XSD_STRING, ParameterMode.IN); call.addParameter(new QName("http://tempuri.org/", "formOrSceneryGraphBytes"), XMLType.XSD_BASE64, ParameterMode.IN); //设置返回值类型 call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING); // 执行调用操作,result 保存返回的结果,invoke 的参数为实参 String result = (String) call.invoke(new Object[]{"loginName","password","forecastInfo","warningInfo","healthTip","moreInfo","",new byte[1],"false","",new byte[1]}); System.out.println(result); }catch (Exception e){ e.printStackTrace(); } } }
(二) 或者:ws增加schemaLocation(<s:import namespace="http://schemas.xmlsoap.org/soap/encoding/" schemaLocation="http://schemas.xmlsoap.org/soap/encoding/"/> )。如下:
<s:schema targetNamespace="http://iamsweb.gmcc.net/WS/AbstractTypes"> <s:import namespace="http://schemas.xmlsoap.org/soap/encoding/" schemaLocation="http://schemas.xmlsoap.org/soap/encoding/"/> <s:complexType name="StringArray"> <s:complexContent mixed="false"> <s:restriction base="soapenc:Array"> <s:sequence> <s:element minOccurs="0" maxOccurs="unbounded" name="String" type="s:string" /> </s:sequence> </s:restriction> </s:complexContent> </s:complexType> </s:schema>
相关文章推荐
- 关于Flex4不生成mxml对应的html文件的解决方法-------无法打开"D:/MyEclipse 8.5/项目名称/WebRoot/WEB-INF/flex/local/zh_CN"
- 无法显示XML页名称以无效字符开头处理资源'http://xx'时出错的解决方法
- flex 无法将“<mx:>”解析为组件执行.解决方法
- 无法解析此远程名称: 'www.***.com' 解决办法(转)
- 无法解析此远程名称: 'www.***.com' 解决办法
- “无法显示 XML 页 - 名称以无效字符开头。”&&“ XML解析错误:未组织好”的解决方法
- 无法解析此远程名称: 'www.***.com' 解决办法 请求因 HTTP 状态 417 失败
- Ubuntu修改计算机名称造成无法解析主机问题解决方法
- 未能解析此远程名称:'nuget.org' 的解决方法
- 未能解析此远程名称:'nuget.org' 的解决方法
- 64位WIN操作系统 ORA-12154: TNS: 无法解析指定的连接标识 解决方法
- 无法解析此远程名称: 'www.***.com' 解决办法
- 无法识别的属性“targetFramework”。请注意属性名称区分大写和小写。错误解决的方法
- 解决NSXmlParser无法解析非utf-8编码的XML问题的方法
- IIS无法解析aspx文件,提示“找不到该文件”的解决方法
- log4cplus使用过程中“LOG4CPLUS_WARN”: 找不到标识符和无法解析的外部符号(链接错误)的解决方法
- SQL2008无法连接到.\SQLEXPRESS,用户'sa'登录失败(错误18456)图文解决方法
- ssm整合MongoDb启动时出现无法将名称 'repository:auditing-attributes' 解析为 'attribute group' 组件异常
- 无法识别的属性“targetFramework”。请注意属性名称区分大写和小写。错误解决的方法
- dcmtk提示无法解析的外部符号(unresolved external symbol)的解决方法