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

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>
            免播放器亚洲一区| 香蕉久久夜色精品| 欧美日韩精品免费| 欧美激情在线免费观看| 欧美福利视频网站| 欧美另类极品videosbest最新版本| 免费在线国产精品| 欧美大香线蕉线伊人久久国产精品| 久久影音先锋| 免费视频一区| 欧美日韩亚洲在线| 国产欧美日本| 在线观看欧美一区| 亚洲精品九九| 亚洲欧美日韩网| 久久久天天操| 亚洲高清不卡在线| 亚洲激情av| 99国产精品一区| 小辣椒精品导航| 欧美成年网站| 国产麻豆综合| 亚洲精品乱码久久久久久日本蜜臀 | 欧美成人有码| 亚洲黄色影院| 亚洲天堂偷拍| 老司机凹凸av亚洲导航| 欧美日本精品一区二区三区| 国产精品高潮呻吟久久| 激情综合五月天| 一本色道久久综合一区 | 午夜精品久久久久影视| 老司机精品久久| 99精品黄色片免费大全| 久久大香伊蕉在人线观看热2| 欧美激情二区三区| 国际精品欧美精品| 在线天堂一区av电影| 久久夜色精品国产| 一本一本久久| 欧美精品激情在线| 在线成人免费观看| 欧美一区二区视频观看视频| 亚洲国产高清一区| 久久国产婷婷国产香蕉| 国产精品美女www爽爽爽视频| 亚洲精品乱码久久久久久| 久久综合给合久久狠狠色| 亚洲视频axxx| 欧美日韩精品免费在线观看视频| 伊人春色精品| 久久免费黄色| 欧美在线视频a| 国产精品美女视频网站| 一区二区日韩| 亚洲精品综合久久中文字幕| 老司机亚洲精品| 一区二区视频免费在线观看 | 制服丝袜激情欧洲亚洲| 欧美大片在线看| 亚洲福利视频一区| 裸体一区二区三区| 欧美影院在线| 国产综合色产在线精品| 久久精品免费播放| 欧美一区二区三区精品| 国产一区二区精品久久99| 久久久国产成人精品| 性欧美暴力猛交69hd| 国产香蕉久久精品综合网| 欧美在线视频一区二区三区| 午夜久久久久| 尹人成人综合网| 中文亚洲欧美| 中文无字幕一区二区三区| 亚洲精品之草原avav久久| 欧美日韩高清在线播放| 亚洲伦理自拍| 一区二区三区久久久| 国产精品视频男人的天堂| 欧美淫片网站| 久久男人资源视频| 亚洲精品一区二区三区99| 亚洲精品欧洲| 国产日韩精品一区观看| 蜜臀av国产精品久久久久| 欧美黑人在线播放| 亚洲在线视频观看| 欧美制服丝袜第一页| 亚洲激情国产| 国产精品99久久久久久有的能看 | 欧美日韩综合在线免费观看| 午夜伦理片一区| 久久久久成人精品免费播放动漫| 亚洲国产片色| 国产精品99久久久久久有的能看| 国内外成人免费激情在线视频| 欧美二区在线观看| 国产精品第一区| 欧美国产激情| 国产精品视频免费在线观看| 欧美国产在线观看| 国产精品美女午夜av| 亚洲福利国产| 国产午夜精品理论片a级探花| 欧美成人午夜激情视频| 国产精品久久一卡二卡| 欧美国产日韩免费| 国产精品最新自拍| 亚洲精品一区二区在线观看| 国产综合一区二区| 亚洲婷婷在线| 日韩视频三区| 久久中文字幕导航| 久久激情综合| 国产精品麻豆欧美日韩ww| 欧美激情国产日韩精品一区18| 国产精品视频999| 亚洲全部视频| 亚洲国产日韩一区| 欧美专区日韩专区| 欧美一乱一性一交一视频| 欧美精品自拍| 亚洲大胆人体视频| 狠狠色综合播放一区二区| 亚洲一区二区高清视频| 一二三四社区欧美黄| 欧美成人高清| 欧美成人第一页| 在线国产亚洲欧美| 久久久久久九九九九| 久久久免费精品视频| 国产区在线观看成人精品| 亚洲尤物精选| 亚洲一区视频在线| 欧美性色综合| 中文一区二区| 欧美人与禽性xxxxx杂性| 在线亚洲免费视频| 欧美大片一区| 亚洲人在线视频| 亚洲经典三级| 欧美夫妇交换俱乐部在线观看| 欧美jizzhd精品欧美喷水 | 欧美中文字幕视频| 久久精品理论片| 国内揄拍国内精品久久| 午夜久久久久| 久久嫩草精品久久久精品一| 国产一区二区无遮挡| 久久精品一区二区三区不卡牛牛 | 国产欧美日韩视频一区二区| 亚洲午夜成aⅴ人片| 亚洲男女自偷自拍| 国产精品久久精品日日| 亚洲无人区一区| 欧美一区二区三区精品| 国产一区二区三区日韩欧美| 欧美一级久久久久久久大片| 久久亚洲色图| 日韩视频一区二区三区| 欧美日韩麻豆| 亚洲欧美韩国| 欧美1级日本1级| 99成人在线| 国产精品免费区二区三区观看| 香港成人在线视频| 免费观看成人网| 9色精品在线| 国产午夜精品久久| 乱人伦精品视频在线观看| 日韩亚洲一区二区| 久久美女性网| 99riav国产精品| 国产亚洲精品高潮| 欧美理论电影在线观看| 午夜欧美电影在线观看| 欧美激情黄色片| 欧美在线视频一区二区| 亚洲伦理在线免费看| 国产精品亚洲精品| 欧美精品久久久久久| 欧美一区二区三区在线| 亚洲人在线视频| 久久综合五月天婷婷伊人| 在线视频欧美一区| 亚洲黄色精品| 国产在线精品一区二区夜色| 欧美精品成人一区二区在线观看| 性色一区二区| 一本色道88久久加勒比精品| 久久男人av资源网站| 亚洲欧美国产日韩天堂区| 亚洲黄一区二区| 国内精品美女在线观看| 国产精品xxx在线观看www| 欧美高清视频一区二区三区在线观看 | 欧美午夜久久久| 麻豆成人av| 久久精品女人天堂|