Net的wsdl生成webservice 异常:undefined simple or complex type 'soapenc:Array'

错误代码如下:

E:\>wsimport -keep service.xml

parsing WSDL...

[WARNING] src-resolve: Cannot resolve the name ‘soapenc:Array‘ to a(n) ‘type definition‘ component.

line 505 of file:/E:/service1.xml#types?schema2

[ERROR] undefined simple or complex type ‘soapenc:Array‘

line 505 of file:/E:/service1.xml

错误原因:

net那边给的wsdl使用的规范过低,生成之后的不认原来的那种规范,使生成代码不适应我们java这边的使用。

<s:schema targetNamespace="http://tempuri.org/AbstractTypes">
      <s:import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
       <s:complexType name="ArrayOfString">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string" />
        </s:sequence>
      </s:complexType>
	  <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 targetNamespace="http://tempuri.org/AbstractTypes">
      <s:import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
	  <s:complexType name="ArrayOfString">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string" />
        </s:sequence>
      </s:complexType>
    </s:schema>

重新执行:wsimport -keep service.xml 成功生成。

解决办法是从一个英文的网站上查到的,所以定为翻译,可惜现在再总结找不到那个网址了TAT!

Net的wsdl生成webservice 异常:undefined simple or complex type 'soapenc:Array'

时间: 2024-08-21 17:24:10

Net的wsdl生成webservice 异常:undefined simple or complex type 'soapenc:Array'的相关文章

C# 调用WebService的3种方式 :直接调用、根据wsdl生成webservice的.cs文件及生成dll C#调用、动态调用

1.直接调用 已知webservice路径,则可以直接 添加服务引用--高级--添加web引用 直接输入webservice URL.这个比较常见也很简单 即有完整的webservice文件目录如下图所示, 也可以在本地IIS根据webservice文件目录新发布一个webservice,然后程序动态调用,修改Url public new string Url { set; get; } 2.根据wsdl文件生成webservice 的.cs文件 及 生成dll C#调用   有时没有这么多文件

利用wsdl.exe生成webservice代理类

根据提供的wsdl生成webservice代理类 1.开始->程序->Visual Studio 2005 命令提示 2.输入如下红色标记部分 D:/Program Files/Microsoft Visual Studio 8/VC>wsdl /language:c# /n:TestDemo /out:d:/Temp/TestService.cs D:/Temp/TestService.wsdl 在d:/Temp下就会产生一个TestService.cs 文件 注意:D:/Temp/T

解析利用wsdl.exe生成webservice代理类的详解

利用wsdl.exe生成webservice代理类:根据提供的wsdl生成webservice代理类1.开始->程序->Visual Studio 2005 命令提示2.输入如下红色标记部分D:/Program Files/Microsoft Visual Studio 8/VC>wsdl /language:c# /n:TestDemo /out:d:/Temp/TestService.cs D:/Temp/TestService.wsdl在d:/Temp下就会产生一个TestServ

java之wsdl自动生成WebService客户端

在web项目中调用webservice接口,以及创建自己的webservice服务端 由于甲方的服务器并不在外网,编码环境是不能直接访问对方的webservice接口的,所以需要把wsdl文件下载到本地,在通过工具生成代理类. 用java的JDK自带命令wsimport -s . xxx.wsdl生成代理类 其中-s表示生成源代码,不指定的话只会生成.calss字节码文件 中间的点"."表示在当前路径 后面空格接上本地的wsdl文件或者URL,例如http://www.xxx.com/

C# 利用VS自带的WSDL工具生成WebService服务类

C# 利用VS自带的WSDL工具生成WebService服务类 wsdl /language:c# /n:空间名 /out:D:/类名 webService接口地址

C#根据WSDL文件生成WebService服务端代码

转自:http://www.cnblogs.com/liyi93/archive/2012/01/30/2332320.html 虽然现在已经进入了.NET FrameWork 4.0的时代,WebService也已经逐渐被淘汰,取而代之的是WCF. 但在工作中难免遇到需要兼容旧版本程序和按照以前的文档进行开发. 一般一个已经实现功能的WebService会发布自己的WSDL文件,供客户端调用生成代理类. 但有时是先有server与client交互的接口定义(WSDL)文件,然后由server和

WSDL自动生成WebService代理类的方法

通常要手动生成WebService代理类需要把一句生成语句,如 wsdl.exe /l:cs  /out:D:\Proxy_UpdateService.cs http://localhost:1101/UpdateService.asmx?wsdl拷贝到Visual Studio 2005 命令提示窗口中去执行,这里再介绍另一个办法. 首先打开Visual Studio 2005,选择菜单"工具"-"外部工具"打开外部工具对话框,如图 ,单击“添加”按钮添加新工具,

Axis2发布webservice(3)--axis2生成wsdl文件,并利用wsdl文件来生成WebService的Java代码

一.利用axis2生成wsdl文件 1.file->New->Other->Axis2 Code Generator 2.选择第2个,点击next 3,先点击add folder->浏览选择WebService项目下的bin文件夹,然后在fully Qualified Class name中填入类路径(包括包名) 然后点击Test 测试是否正确. 点击Next 4.可以看到即将发布的WebService名称和命名空间 5.继续Next,选择wsdl文件保存目录 这样services

php 使用zendstudio 生成webservice文件 wsdl

首先新建一个项目 在项目中新建下面这些文件 php类文件 test.php <?php class test { public function __construct() { } public function add($name,$age) { $result = array('REV'=>false); $result['REV'] = true; $result['DATA'] = 1; $result = json_encode($result); return $result; }