青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Khan's Notebook GCC/GNU/Linux Delphi/Window Java/Anywhere

路漫漫,長修遠(yuǎn),我們不能沒有錢
隨筆 - 173, 文章 - 0, 評論 - 257, 引用 - 0
數(shù)據(jù)加載中……

IOS WSDL2OBJC如何與CXF對接

首先, WSDL2OBJC直接生成的代碼是無法正確發(fā)送CXF能解析的數(shù)據(jù)包的

我懶得去看WSDL2OBJC的源碼, 但是由其生成的源碼看看倒是ok的

我wsdl的服務(wù)名是HotelPortService
生成的文件中有個HotelPortServiceSvc.m, 要修改的地方全部集中在這個文件
首先, 找到如下代碼的位置, 替換掉

- (NSString *)serializedFormUsingHeaderElements:(NSDictionary *)headerElements bodyElements:(NSDictionary *)bodyElements

{

    xmlDocPtr doc;

doc = xmlNewDoc((const xmlChar*)XML_DEFAULT_VERSION);

if (doc == NULL) {

NSLog(@"Error creating the xml document tree");

return @"";

}

xmlNodePtr root = xmlNewDocNode(doc, NULL, (const xmlChar*)"Envelope", NULL);

xmlDocSetRootElement(doc, root);

xmlNsPtr soapEnvelopeNs = xmlNewNs(root, (const xmlChar*)"http://schemas.xmlsoap.org/soap/envelope/", (const xmlChar*)"soap");

xmlSetNs(root, soapEnvelopeNs);

xmlNsPtr xslNs = xmlNewNs(root, (const xmlChar*)"http://www.w3.org/1999/XSL/Transform", (const xmlChar*)"xsl");

xmlNewNs(root, (const xmlChar*)"http://www.w3.org/2001/XMLSchema-instance", (const xmlChar*)"xsi");

xmlNewNsProp(root, xslNs, (const xmlChar*)"version", (const xmlChar*)"1.0");

xmlNewNs(root, (const xmlChar*)"http://www.w3.org/2001/XMLSchema", (const xmlChar*)"xs");

xmlNewNs(root, (const xmlChar*)"http://port.ekezhan.com/", (const xmlChar*)"HotelPortServiceSvc");//字符串部分根據(jù)服務(wù)名不同而不同

if((headerElements != nil) && ([headerElements count] > 0)) {

xmlNodePtr headerNode = xmlNewDocNode(doc, soapEnvelopeNs, (const xmlChar*)"Header", NULL);

xmlAddChild(root, headerNode);

for(NSString *key in [headerElements allKeys]) {

id header = [headerElements objectForKey:key];

xmlAddChild(headerNode, [header xmlNodeForDoc:doc elementName:key elementNSPrefix:nil]);

}

}

if((bodyElements != nil) && ([bodyElements count] > 0)) {

xmlNodePtr bodyNode = xmlNewDocNode(doc, soapEnvelopeNs, (const xmlChar*)"Body", NULL);

xmlAddChild(root, bodyNode);

for(NSString *key in [bodyElements allKeys]) {

id body = [bodyElements objectForKey:key];

xmlAddChild(bodyNode, [body xmlNodeForDoc:doc elementName:key elementNSPrefix:nil]);

}

}

xmlChar *buf;

int size;

xmlDocDumpFormatMemory(doc, &buf, &size, 1);

NSString *serializedForm = [NSString stringWithCString:(const char*)buf encoding:NSUTF8StringEncoding];

xmlFree(buf);

xmlFreeDoc(doc);

return serializedForm;

}


替換成:

- (NSString *)serializedFormUsingHeaderElements:(NSDictionary *)headerElements bodyElements:(NSDictionary *)bodyElements

{

    xmlDocPtr doc;

doc = xmlNewDoc((const xmlChar*)XML_DEFAULT_VERSION);

if (doc == NULL) {

NSLog(@"Error creating the xml document tree");

return @"";

}

xmlNodePtr root = xmlNewDocNode(doc, NULL, (const xmlChar*)"Envelope", NULL);

xmlDocSetRootElement(doc, root);

xmlNsPtr soapEnvelopeNs = xmlNewNs(root, (const xmlChar*)"http://schemas.xmlsoap.org/soap/envelope/", (const xmlChar*)"soapenv");//此處修改

xmlSetNs(root, soapEnvelopeNs);

//xmlNsPtr xslNs = xmlNewNs(root, (const xmlChar*)"http://www.w3.org/1999/XSL/Transform", (const xmlChar*)"xsl");

//xmlNewNs(root, (const xmlChar*)"http://www.w3.org/2001/XMLSchema-instance", (const xmlChar*)"xsi");

//xmlNewNsProp(root, xslNs, (const xmlChar*)"version", (const xmlChar*)"1.0");

//xmlNewNs(root, (const xmlChar*)"http://www.w3.org/2001/XMLSchema", (const xmlChar*)"xs");

    

xmlNewNs(root, (const xmlChar*)"http://port.ekezhan.com/", (const xmlChar*)"port");

if((headerElements != nil) && ([headerElements count] > 0)) {

xmlNodePtr headerNode = xmlNewDocNode(doc, soapEnvelopeNs, (const xmlChar*)"Header", NULL);

xmlAddChild(root, headerNode);

for(NSString *key in [headerElements allKeys]) {

id header = [headerElements objectForKey:key];

xmlAddChild(headerNode, [header xmlNodeForDoc:doc elementName:key elementNSPrefix:nil]);

}

}

//此處修改

else

{  

xmlNodePtr headerNode = xmlNewDocNode(doc, soapEnvelopeNs, (const xmlChar*)"Header", NULL);

xmlAddChild(root, headerNode);

}

if((bodyElements != nil) && ([bodyElements count] > 0)) {

xmlNodePtr bodyNode = xmlNewDocNode(doc, soapEnvelopeNs, (const xmlChar*)"Body", NULL);

xmlAddChild(root, bodyNode);

for(NSString *key in [bodyElements allKeys]) {

id body = [bodyElements objectForKey:key];

xmlAddChild(bodyNode, [body xmlNodeForDoc:doc elementName:key elementNSPrefix:@"port"]);//此處修改

}

}

xmlChar *buf;

int size;

xmlDocDumpFormatMemory(doc, &buf, &size, 1);

NSString *serializedForm = [NSString stringWithCString:(const char*)buf encoding:NSUTF8StringEncoding];

xmlFree(buf);

xmlFreeDoc(doc);

return serializedForm;

}


替換全部

elementNSPrefix:@"HotelPortServiceSvc" 

elementNSPrefix:nil  //字符串部分根據(jù)服務(wù)名不同而不同



替換全部

nodeName = [NSString stringWithFormat:@"%@:%@", @"HotelPortServiceSvc", elName];//字符串部分根據(jù)服務(wù)名不同而不同

 

nodeName = [NSString stringWithFormat:@"%@", elName];




然后再編譯運(yùn)行. 如果沒有意外, 就能獲得正確的結(jié)果了. 文檔如有錯漏, 歡迎指正補(bǔ)全



測試環(huán)境 

Mac OS 10.6.8,  xcode 4.0.1,  WSDL2ObjC 0.7 pre1

posted on 2011-11-04 17:36 Khan 閱讀(1783) 評論(2)  編輯 收藏 引用 所屬分類: 跨平臺開發(fā)

評論

# re: IOS WSDL2OBJC如何與CXF對接  回復(fù)  更多評論   

比較討厭d地方是, 每次發(fā)布的webservice變動. 都需要重復(fù)一次, 不過仍舊比人肉解析xml要省事兒
2011-11-04 17:41 | Khan's Notebook

# re: IOS WSDL2OBJC如何與CXF對接  回復(fù)  更多評論   

我只想說太給力了。。解決了我一周都沒有解決的問題,webservice交互問題,忙了一周多都沒忙出來。。給力
2014-09-11 14:59 | 左凌風(fēng)
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            一本色道久久综合亚洲精品不 | 亚洲精品国产精品国产自| 一区二区三区欧美成人| 日韩午夜在线电影| 一本色道88久久加勒比精品| 99精品欧美一区二区蜜桃免费| 亚洲欧洲日产国产综合网| 亚洲第一黄色| 亚洲美女在线视频| 午夜精品国产| 久久久久久久97| 蜜桃久久精品一区二区| 美日韩精品视频免费看| 欧美成人精品h版在线观看| 亚洲国产高清在线观看视频| 91久久久久久久久| 亚洲一区二区三区精品在线| 亚洲一区二区三区免费观看 | 欧美在线观看视频一区二区| 久久精品一二三| 久久青青草原一区二区| 久久伊人一区二区| 蘑菇福利视频一区播放| 欧美巨乳波霸| 国产精品久久久久av| 欧美婷婷六月丁香综合色| 国产精品久久久免费| 国产亚洲精品久久久久婷婷瑜伽| 国产裸体写真av一区二区| 欧美日韩999| 国产欧美日韩一区二区三区在线观看| 国产日产高清欧美一区二区三区| 国产欧美一区二区三区视频| 激情久久久久久久久久久久久久久久| 亚洲国产第一| 亚洲小少妇裸体bbw| 欧美一区二区视频网站| 欧美激情自拍| 这里只有视频精品| 羞羞视频在线观看欧美| 玖玖综合伊人| 欧美日韩视频在线一区二区观看视频 | 欧美日韩视频在线| 国产精品久久久久久户外露出| 国产伦精品一区二区三区| 国产日韩亚洲欧美| 亚洲精品美女久久7777777| 亚洲综合电影| 亚洲电影在线| 欧美日韩国产91| 国产精品欧美一区二区三区奶水| 国产亚洲欧美日韩日本| 亚洲日本成人女熟在线观看| 西瓜成人精品人成网站| 欧美gay视频| 亚洲一级免费视频| 欧美国产日韩视频| 欧美精品一区二区精品网 | 国产精品日本一区二区| 亚洲国产成人久久| 亚洲欧美一区二区三区久久| 欧美激情小视频| 性欧美18~19sex高清播放| 欧美国产高潮xxxx1819| 国产精品久久久久久福利一牛影视| 一本大道久久a久久精品综合| 蜜臀a∨国产成人精品| 亚洲一本大道在线| 欧美日韩视频专区在线播放 | 久久国产精品久久久久久| 亚洲精品激情| 欧美xxxx在线观看| 国内精品99| 久久久亚洲高清| 欧美国产视频日韩| 欧美成年人网| 在线国产欧美| 久久精品一区四区| 午夜精品福利一区二区蜜股av| 国产精品大全| 亚洲永久网站| 亚洲国产精品久久久久秋霞蜜臀| 欧美v日韩v国产v| 亚洲日产国产精品| 亚洲成色999久久网站| 久久精品99国产精品酒店日本| 国产亚洲精品一区二555| 久久成人精品视频| 欧美一区二区视频在线| 亚洲精品国产无天堂网2021| 亚洲国产成人精品女人久久久| 久久躁日日躁aaaaxxxx| 亚洲伦伦在线| 亚洲国产精品尤物yw在线观看| 欧美一区二区三区在线| 国产在线精品一区二区夜色| 欧美成人自拍| 欧美mv日韩mv国产网站| 亚洲欧洲一区二区三区在线观看 | 国产精品99久久不卡二区| 亚洲日本成人在线观看| 国产精品国产精品国产专区不蜜| 亚洲欧美一区二区原创| 久久久久久久欧美精品| 亚洲国产小视频在线观看| 亚洲人成久久| 国产精品一区在线播放| 久久精品一二三区| 奶水喷射视频一区| 亚洲人成人99网站| 欧美一区免费| 日韩一区二区精品| 亚洲欧美日韩国产中文在线| 亚洲第一综合天堂另类专| 亚洲人成小说网站色在线| 国产女主播在线一区二区| 日韩视频国产视频| 国产日韩在线一区| 亚洲激情一区二区三区| 国产欧美日韩亚洲一区二区三区| 亚洲第一狼人社区| 国产精品一区免费在线观看| 亚洲三级网站| 国产最新精品精品你懂的| 亚洲黄一区二区三区| 国产精品一区二区你懂得 | 亚洲日本在线观看| 激情久久中文字幕| 欧美一区三区二区在线观看| 在线日韩一区二区| 中文精品99久久国产香蕉| 国产综合欧美| 亚洲天天影视| 国内精品免费午夜毛片| 亚洲一区二区精品| 亚洲美女毛片| 欧美一区二区三区日韩| 亚洲一区二区三区精品视频 | 久久久综合免费视频| 国产精品日韩一区| 亚洲国产日韩在线一区模特| 国产香蕉97碰碰久久人人| 亚洲精品乱码久久久久久蜜桃91| 极品少妇一区二区三区| 一区二区激情| 欧美一区在线视频| 欧美日韩高清在线观看| 亚洲第一中文字幕在线观看| 国产一区深夜福利| 亚洲欧美精品一区| 欧美在线中文字幕| 亚洲私人影吧| 国产精品日韩高清| 一本色道久久综合一区| 久久久99国产精品免费| 99re6热在线精品视频播放速度| 一区二区三区四区蜜桃| 国内精品国产成人| 亚洲国产高清在线| 久久久久久噜噜噜久久久精品| 激情另类综合| 亚洲激情电影在线| 久久久久久9999| 亚洲国产美女| 日韩小视频在线观看| 国内精品伊人久久久久av影院| 亚洲一区二区动漫| 亚洲综合第一| 亚洲一区久久久| 亚洲欧美在线另类| 一区二区日韩欧美| 亚洲国产精品123| 中文一区二区在线观看| 欧美不卡高清| 久久资源在线| 国产日韩精品视频一区二区三区| 久久久久久精| 国产免费亚洲高清| 亚洲国产日韩精品| 亚洲国产欧美日韩| 老司机一区二区| 亚洲在线成人| 欧美一区二区三区另类| 国产精品成人一区二区网站软件 | 欧美在线免费| 国产精品毛片大码女人| 久久精品女人天堂| 亚洲精品自在久久| 久久久久久国产精品mv| 夜夜嗨一区二区三区| 国产在线精品二区| 欧美午夜精品久久久久久浪潮| 久久精品国产99国产精品澳门| 99精品欧美一区二区蜜桃免费| 久久久91精品国产一区二区精品| 一本久道久久综合婷婷鲸鱼| 国内精品免费在线观看| 国产精品久久久久高潮| 免费人成网站在线观看欧美高清 | 欧美一区二区视频在线|