我正在开发一个使用网络服务的应用。这是一个私人服务,所以我不能在这里发布WSDL或生成代码,所以这对于一些一般性建议而不是细节来说更是一个问题。
我将WSDL输入Sudz-c。 WSDL最初有一些XSD的导入,sudz-c会忽略,所以我将它们复制到WSDL的types部分。
我使用生成的代码向服务发出请求,但我发现请求缺少复制到WSDL的types部分的复杂类型对象的名称空间。
我再次知道这是非常一般的信息,但如果其他人与Sudz有类似的问题,那么获得你的建议会很棒。
答案 0 :(得分:2)
我知道线程已经结束,但我找到了解决这个问题的方法.. 如果WSDL包含/导入外部XSD然后是YES,那么将这些XSD类型复制到WSDL中是正确的(即直接将其嵌入到WSDL中而不是包含/导入)。生成的代码在任何意义上都是完美的,因为它也为XSD类型生成类型..但是你可能会收到一个ERROR(多个文件中的同一个错误)..这将是一个缺少几个请求/响应类型的BASE类。在分析代码后我意识到缺少名称空间只是相同的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
{
}
我希望这会对别人有所帮助......我被困了好几天但后来才开始工作了...... 快乐编码:)
答案 1 :(得分:0)
您可能尝试的一件事是确保在实际服务本身中修复命名空间。
这是一个链接帮助完成:
http://alensiljak.blogspot.com/2009/06/removing-httptempuriorg-namespace-from.html
答案 2 :(得分:0)
无法找到答案,所以最后只需手工编写网络服务信息:(