我是Objective C中的新手。我试图使用sudcz来使用webservice。 我已经在PHP和MySQL中创建了Webservice服务器,现在我想与服务器交流并获得相关结果。Objective C - sudzc,返回空的ArrayOfString,但xml响应包含数据
在调用方法时,我从服务器获取了正确的XML响应,但返回的ArrayOfString类型的对象似乎为空。 NSLog打印只是< ArrayOfString> </ArrayOfString>,我假设sudzc不是为了解析XML到一个aproporiate形式,因此返回的对象是空的,我错了吗?或者我不能看到或处理返回的对象?有人得到任何线索吗?
如果有任何需要的材料,我会发布它们。 Thx。
补充:
CXMLElementNode* element = [[Soap getNode: [doc rootElement] withName: @"Body"] childAtIndex:0];
if(deserializeTo == nil) {
output = [Soap deserialize:element];
} else {
NSLog(@"Deserialize to : %@", deserializeTo);
if([deserializeTo respondsToSelector: @selector(initWithNode:)])
//problematic section
element = [element childAtIndex:0];
NSLog(@"NSSstring element : %@", element);
output = [deserializeTo initWithNode: element];
} else {
NSString* value = [[[element childAtIndex:0] childAtIndex:0] stringValue];
NSLog(@"NSSstring value : %@", value);
output = [Soap convert: value toType: deserializeTo];
}
NSLog(@"output : %@", output);
}
我认为存在问题的部分就是我的推杆意见存在问题的部分。因为object元素是xml元素,并且在调用output = [deserializeTo initWithNode:element]之后,没有任何反应,NSLog(输出)在调用消息之前打印与打印NSLog(deserializeTo)相同的输出initWithNode:元素对象deserializeTo 我怀疑SoapObject实例方法initWithNode它不会像它应该那样工作,因为 我的deserializeTo是类RSiArrayOfstring的一个实例,该类是SoapObject的子集,它将此消息委托给父类(SoapObject),并且在SoapObject中实现此消息的方法是:
// Called when initializing the object from a node
- (id) initWithNode: (CXMLNode*) node {
if(self = [self init]) {
}
return self;
}
我不能看到与自变量节点任何操纵
执行此代码期间从调试器的输出:
2012-02-08 20:22:03.166 URS[1170:b603] Deserialize to : <ArrayOfstring></ArrayOfstring>
2012-02-08 20:23:17.258 URS[1170:b603] NSSstring element : <CXMLElement 0x5d7b920 [0x59701b0] return <return arrayType="SOAP-ENC:Array[6]" type="SOAP-ENC:Array">< item arrayType="xsd:string[1]" type="SOAP-ENC:Array">< item type="xsd:string">1 - Elektroúdržba</item>< /item>< item arrayType="xsd:string[1]" type="SOAP-ENC:Array">< item type="xsd:string">2 - Zámočnícka dielňa< /item>< /item>< item arrayType="xsd:string[1]" type="SOAP-ENC:Array">< item type="xsd:string">3 - Údržba žeriavov</item>< /item>< item arrayType="xsd:string[1]" type="SOAP-ENC:Array">< item type="xsd:string">6 - Zámočnícká dielňa H4< /item>< /item>< item arrayType="xsd:string[1]" type="SOAP-ENC:Array">< item type="xsd:string">4 - Mechanici< /item>< /item>< item arrayType="xsd:string[1]" type="SOAP-ENC:Array">< item type="xsd:string">5 - Údržba CNC< /item>< /item>< /return>>
2012-02-08 20:56:11.353 URS[1170:b603] output : < ArrayOfstring>< /ArrayOfstring
sudcz我相信包括所有的来源,你有没有尝试过调试它? – Joe 2012-02-08 15:01:48
关于sudcz,我将服务对象上的对象设置为yes,我也是xcode中的新手,我使用的是xcode 4.x.你能否建议我用sudze调试任何步骤? – feko 2012-02-08 15:06:32
开始[这里](https://developer.apple.com/library/mac/#documentation/ToolsLanguages/Conceptual/Xcode4UserGuide/Debugging/Debugging.html),如果你发现原因,什么或者哪里不工作,那么用你的发现编辑你的答案,它会更容易帮助你。 – Joe 2012-02-08 15:14:06