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

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

路漫漫,長修遠,我們不能沒有錢
隨筆 - 173, 文章 - 0, 評論 - 257, 引用 - 0
數據加載中……

IOS WSDL2OBJC如何與CXF對接

首先, WSDL2OBJC直接生成的代碼是無法正確發送CXF能解析的數據包的

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

我wsdl的服務名是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");//字符串部分根據服務名不同而不同

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  //字符串部分根據服務名不同而不同



替換全部

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

 

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




然后再編譯運行. 如果沒有意外, 就能獲得正確的結果了. 文檔如有錯漏, 歡迎指正補全



測試環境 

Mac OS 10.6.8,  xcode 4.0.1,  WSDL2ObjC 0.7 pre1

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

評論

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

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

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

我只想說太給力了。。解決了我一周都沒有解決的問題,webservice交互問題,忙了一周多都沒忙出來。。給力
2014-09-11 14:59 | 左凌風
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产一区二区三区av电影 | 久久国产精品久久久久久久久久| 亚洲永久免费av| 国产日韩在线视频| 嫩草国产精品入口| 亚洲国产成人精品久久| 亚洲欧美经典视频| 黄色欧美成人| 91久久精品国产91久久性色| 欧美午夜宅男影院| 久久精品国产第一区二区三区| 久久久亚洲人| av成人动漫| 午夜精品在线视频| 亚洲国产成人久久| 99热免费精品| 韩国免费一区| 在线欧美小视频| 午夜日韩在线观看| 老司机一区二区三区| 亚洲视频欧美在线| 久久精品99久久香蕉国产色戒| 国产精品国产三级国产专播品爱网| 久久超碰97中文字幕| 猫咪成人在线观看| 亚洲男人第一av网站| 久久久久网址| 亚洲一级黄色av| 久久国产精品网站| 一区二区三区欧美在线| 欧美一区二区在线播放| 99视频在线观看一区三区| 亚洲一区二区三区视频| 亚洲第一级黄色片| 亚洲人成欧美中文字幕| 中日韩美女免费视频网址在线观看| 国产亚洲永久域名| 亚洲卡通欧美制服中文| 黄色在线成人| 中文国产亚洲喷潮| 亚洲国产精品一区二区第一页| 一区二区三区三区在线| 亚洲高清精品中出| 亚洲在线免费| 99热免费精品| 久久精品亚洲| 先锋亚洲精品| 欧美经典一区二区三区| 久久只精品国产| 国产精品久久久久久久久动漫 | 亚洲香蕉视频| 久久久国产精品亚洲一区| 中日韩美女免费视频网址在线观看 | 99re热这里只有精品免费视频| 性做久久久久久久免费看| 一区二区三区欧美在线| 老司机免费视频一区二区| 欧美一区国产二区| 亚洲欧洲日韩女同| 国产精品青草久久| 亚洲精品国产拍免费91在线| 国语自产精品视频在线看| 亚洲婷婷综合色高清在线| 亚洲精品一区二区网址| 久久久久久久久久久久久9999| 午夜精品福利在线| 欧美日本亚洲韩国国产| 免费成人网www| 国产一区二区成人| 亚洲一线二线三线久久久| 一本久道久久综合中文字幕 | 亚洲午夜性刺激影院| 你懂的亚洲视频| 久久综合九色九九| 欧美va天堂| 另类亚洲自拍| 国产一区二区三区不卡在线观看| 亚洲网站在线| 亚洲视频在线一区观看| 欧美精品一区二区三区在线播放| 欧美国产日韩精品| 在线观看亚洲| 国产精品美女一区二区在线观看 | 亚洲国产成人精品女人久久久| 欧美一区二区私人影院日本 | 欧美影院在线播放| 欧美在线视频一区二区三区| 国产精品久久久久久久久借妻 | 亚洲欧洲99久久| 亚洲欧美视频一区| 久久国产精品一区二区三区四区| 午夜影院日韩| 国产精品你懂得| 亚洲视频一区在线| 亚洲一区二区免费视频| 欧美日韩一区二区三区高清| 亚洲另类自拍| 亚洲午夜羞羞片| 国产精品国产精品国产专区不蜜| 亚洲国产精品一区二区尤物区| 久久精品一级爱片| 蜜臀av在线播放一区二区三区 | 欧美在线免费看| 久久久精品国产免费观看同学| 国产综合欧美| 久久精品网址| 欧美成人午夜77777| 亚洲人成网站精品片在线观看| 欧美福利影院| 日韩午夜中文字幕| 亚洲在线黄色| 国产欧美日韩在线| 久久精品国产清自在天天线| 国产欧美日韩精品在线| 亚洲国产一区二区三区青草影视| 日韩视频免费大全中文字幕| 亚洲欧美中文日韩在线| 久久久精品日韩欧美| 在线日韩精品视频| 欧美承认网站| 日韩视频―中文字幕| 午夜国产一区| 国产一区深夜福利| 久久女同精品一区二区| 亚洲国产精品福利| 欧美日本在线看| 亚洲国产三级网| 亚洲无线一线二线三线区别av| 国产精品色午夜在线观看| 欧美一区二区三区婷婷月色| 欧美jizzhd精品欧美巨大免费| 日韩视频免费在线| 国产精品理论片在线观看| 欧美与黑人午夜性猛交久久久| 欧美电影免费观看大全| 一区二区三区四区五区精品| 国产精品女主播| 久久久久久一区二区三区| 亚洲国内在线| 亚洲欧美日韩精品久久亚洲区| 国产亚洲福利一区| 嫩草伊人久久精品少妇av杨幂| 一本大道久久精品懂色aⅴ| 久久国产一区| 亚洲精品乱码视频| 蜜桃视频一区| 一区二区三区回区在观看免费视频| 久久狠狠亚洲综合| 亚洲人成在线播放网站岛国| 国产精品爱啪在线线免费观看| 欧美在线在线| 亚洲毛片av| 久久久国产成人精品| 亚洲精品国产品国语在线app | 亚洲欧美日韩一区二区在线| 久久久久久久久综合| 亚洲精品久久久久久久久久久| 国产精品久久久久久亚洲毛片| 久久精品亚洲精品国产欧美kt∨| 亚洲人成网站777色婷婷| 久久国产视频网| 91久久精品国产91性色tv| 国产精品久久久久久久午夜| 毛片av中文字幕一区二区| 一区二区三区四区五区精品视频| 乱中年女人伦av一区二区| 亚洲一区二区三区四区视频| 激情视频一区二区三区| 欧美日韩一区二区欧美激情| 久久久久久**毛片大全| 一区二区欧美日韩视频| 欧美 日韩 国产在线| 午夜宅男久久久| 欧美性jizz18性欧美| 蜜桃久久av一区| 午夜天堂精品久久久久| 亚洲免费成人av| 美女图片一区二区| 亚洲欧美在线另类| 亚洲精品在线观| 国内综合精品午夜久久资源| 欧美色综合天天久久综合精品| 男人插女人欧美| 一本久久综合| **欧美日韩vr在线| 国产欧美日韩综合一区在线观看 | 欧美一区二区在线免费播放| 亚洲美女黄网| 在线播放中文字幕一区| 国产精品色一区二区三区| 欧美日本亚洲| 美国成人毛片| 欧美中文在线字幕| 亚洲一区二区三区精品在线| 亚洲日本中文字幕免费在线不卡| 免费毛片一区二区三区久久久| 欧美影院在线播放| 亚洲影院免费观看| 99视频一区二区| 久久国产精品久久w女人spa|