1

我正在开发一个使用 Web 服务的应用程序。这是一项私人服务,因此我无法在此处发布 WSDL 或生成的代码,因此这更像是一些一般性建议而不是具体问题。

我将 WSDL 输入到 Sudz-c。WSDL 最初有一些 sudz-c 会忽略的 XSD 导入,所以我将它们复制到 WSDL 的类型部分。

我使用生成的代码向服务发出请求,但我发现该请求缺少我复制到 WSDL 类型部分的复杂类型对象的名称空间。

我再次知道这是非常笼统的信息,但如果其他人对 Sudz 也有类似的问题,很高兴得到您的建议。

4

3 回答 3

2

我知道线程已经结束,但我找到了解决这个问题的方法。如果一个 WSDL 包含/导入了外部 XSD,那么是的,你将这些 XSD 类型复制到 WSDL 中是正确的(即直接将它嵌入到 WSDL 中而不是包含/importing).. 生成的代码在任何意义上几乎都是完美的,因为它也为 XSD 类型生成类型.. 但您可能会收到一个错误(多个文件中的相同错误).. 这将是一个缺少的 BASE-Class 少数请求/响应类型.. 分析代码后,我意识到缺少的命名空间只不过是同一个 SOAPObject 对象,所以我用 SOAPObject.h 替换了缺少的命名空间,并使用 SOAPObject 接口/类作为基类。例如在我的情况下

#include "SOAP.h"

#include "sudz.h"
@class sudz;

@interface sudzAbstractRequestType : sudz
{
}

(注意:“sudz”是您在使用 SUDZ-C 网站/项目生成代码时使用的唯一名称,在您的情况下它可以不同)。我将代码更改为(项目中遇到此错误的任何地方):

#include "SOAP.h"

#include "SOAPObject.h"
@class SOAPObject;
//#include "sudz.h"
//@class sudz;

@interface sudzAbstractRequestType : SOAPObject//sudz
{
}

我希望这对其他人有帮助......我被困了好几天,但后来它工作正常......快乐编码:)

于 2012-11-12T07:03:06.397 回答
0

找不到这个问题的答案,所以最后只是手动编码网络服务消息:(

于 2011-12-12T07:23:29.273 回答
0

您可能会尝试的一件事是确保在实际服务本身中修复您的命名空间。

这是一个链接帮助完成这项工作:

http://alensiljak.blogspot.com/2009/06/removing-httptempuriorg-namespace-from.html

于 2011-11-18T18:18:02.533 回答