代码之家  ›  专栏  ›  技术社区  ›  ila

使用C中的VS2008解决方案生成的Axis Web服务#

  •  3
  • ila  · 技术社区  · 15 年前

    我正在尝试将对外部轴生成的Web服务的Web引用添加到Visual Studio 2008解决方案中。 我收到的URL指向一个WSDL,我可以通过浏览器成功地访问它,我看到了所有的wsservice详细信息。使用的轴版本为1.4。

    但是,如果我运行wsdl.exe,或者在vs2008中添加引用时,我可以看到左侧的方法列表,但是我得到一个错误声明:


    URL处的文档 http://............?wsdl 无法识别为已知的文档类型。

    来自每个已知类型的错误消息可能有助于解决问题:

    • “disco document”中的报告是“url处的发现文档” http://.........?wsdl 找不到“”。
      • 无法识别文档格式。
    • “WSDL文档”中的报告为“XML文档(510、62)中存在错误。”
      • 未定义命名空间前缀“impl:urn”。
    • “xml schema”中的报表为“w3c xml架构的根元素应为,其命名空间应为” http://www.w3.org/2001/XMLSchema “。”

    我不能继续。我在这里看到了其他的帖子,但是所有的帖子都是指已经添加了Web引用的情况。

    非常感谢!

    a.

    编辑: 多谢各位,实际上我“用手”解决了这个问题,正如Dovvoluk以某种方式建议的那样:我捕获了WSDL,在文件系统中动态地保存了它,然后手工修改了它,直到wsdl.exe能够生成类。然后我在项目中添加了类,并设法调用了Web服务。

    CIAO 安德莉亚

    1 回复  |  直到 15 年前
        1
  •  3
  •   dovholuk    15 年前

    这是我在使用轴1.4时遇到的一个常见问题。我个人总是手工编写WSDL和XSD代码,而不是出于这个和其他原因使用发射功能…

    如果你打开你的?然后开始解析,我敢打赌您在这里有一些“空”的枚举。类似:

    <xs:simpleType name="MyType">
    </xs:simpleType>
    

    我只是在这里猜测,因为您没有发布WSDL(不确定是否可以?)但是,当我编写WSDL/XSD并对简单类型有限制时,我会得到这种精确的行为…例如:

    <xs:simpleType name="IpAddress">
      <xs:restriction base="xs:string">
        <xs:pattern value="\d*"> (note this is not 'correct' i'm just 'for instancing')
      </xs:restriction>
    </xs:simpleType>
    

    (如果那是无效的XSD,不要杀我-我只是从记忆中走出来…:)

    轴将吸收这个,创建对象,但当它得到发射使用?WSDL显示为“无效”……

    因此,我的建议是梳理WSDL——尤其是“不完整”模式定义的类型部分……把它们从你的Java中拿出来,然后再试一次,直到它在C…

    不知道这是否有帮助-但如果你需要其他想法,请发回去…