标签:nod XML 模板 文件 data- jsb 获取 src iss
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Fault><faultcode>soap:Client</faultcode><faultstring>Unmarshalling Error: 意外的元素 (uri:"http://xxxxx.xxxxx.com/", local:"a")。所需元素为<{}a>,<{}b>,<{}c> </faultstring></soap:Fault></soap:Body></soap:Envelope>
那看看我们发出去了什么
<soap:Body> <xxxxService:test> <xxxxService:a>1</xxxxService:a> <xxxxService:b>1.4</xxxxService:b> <xxxxService:c>xxx</xxxxService:c> </xxxxService:test> </soap:Body>这里说明一下:xxxxService 是我的ServiceName,在这里应该叫命名空间,这命名空间就是意外的罪魁祸首,如今知道元凶,那我们要怎么处理呢?
- (void)addElementsToNode:(xmlNodePtr)node { if(self.a != 0) { xmlAddChild(node, [self.a xmlNodeForDoc:node->doc elementName:@"a" elementNSPrefix:@"xxxxService"]); } if(self.b != 0) { xmlAddChild(node, [self.b xmlNodeForDoc:node->doc elementName:@"b" elementNSPrefix:@"xxxxService"]); } if(self.c != 0) { xmlAddChild(node, [self.c xmlNodeForDoc:node->doc elementName:@"c" elementNSPrefix:@"xxxxService"]); } }
- (void)addElementsToNode:(xmlNodePtr)node { if(self.a != 0) { xmlAddChild(node, [self.a xmlNodeForDoc:node->doc elementName:@"a" elementNSPrefix:nil]); } if(self.b != 0) { xmlAddChild(node, [self.b xmlNodeForDoc:node->doc elementName:@"b" elementNSPrefix:nil]); } if(self.c != 0) { xmlAddChild(node, [self.c xmlNodeForDoc:node->doc elementName:@"c" elementNSPrefix:nil]); } }这方法为什么说是蠢呢?由于这webservice有非常多的方法,那不是要一个个改掉,当然聪明点的不回手动一个个去改,用文本替换的方式。所有替换掉,可是要是接口有变呢?又要替换一次,所以就有了更聪明的办法。
- (void)addElementsToNode:(xmlNodePtr)node { if(self.a != 0) { xmlAddChild(node, [self.a xmlNodeForDoc:node->doc elementName:@"a" elementNSPrefix:nil]); } if(self.b != 0) { xmlAddChild(node, [self.b xmlNodeForDoc:node->doc elementName:@"b" elementNSPrefix:nil]); } if(self.c != 0) { xmlAddChild(node, [self.c xmlNodeForDoc:node->doc elementName:@"c" elementNSPrefix:nil]); } }是不是生成的就是nil了,好了,最后
标签:nod XML 模板 文件 data- jsb 获取 src iss
原文地址:http://www.cnblogs.com/lytwajue/p/6885162.html