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

The power of C, the power of MD

A problem is a chance to do your best
posts - 11, comments - 22, trackbacks - 0, articles - 0
  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
電信provisioning系統(tǒng)中,常常需要與遠(yuǎn)程服務(wù)器實(shí)時(shí)交換一些數(shù)據(jù),以完成用戶的請(qǐng)求。由于簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(Simple Object Access Protocol, SOAP)的流行,許多涉及到第三方的應(yīng)用,我們一般都比較樂(lè)意使用SOAP來(lái)開(kāi)發(fā)。不過(guò),由于可能涉及到公司的機(jī)密,本系列教程的開(kāi)發(fā)實(shí)例盡量采用在網(wǎng)上已經(jīng)公開(kāi)的Web Service資源。
 
上一節(jié),講解了用iconv解決gSOAP輸出的中文文本亂碼的問(wèn)題。在本節(jié)中,我們用一個(gè)天氣預(yù)報(bào)客戶端的例子,簡(jiǎn)述一下gSOAP輸入的中文文本亂碼的問(wèn)題。
 
Webxml.com.cn提供的天氣預(yù)報(bào)web服務(wù),endpoint地址是:http://webservice.webxml.com.cn/WebServices/WeatherWebService.asmx,大家可以點(diǎn)擊進(jìn)去,查看一下該服務(wù)的所有對(duì)外提供的接口。其中,利用getWeatherbyCityName接口,可以按給定的城市名字查詢?cè)摮鞘械奶鞖忸A(yù)報(bào),如果輸入的城市名字不能識(shí)別,將統(tǒng)一返回北京的天氣預(yù)報(bào)。
 
根據(jù)前三節(jié)的內(nèi)容,我們可以很快地準(zhǔn)備好其客戶端存根程序:
1.     mkdir –p weather
2.     cd weather
3.     ../wsdl2h -c -o weather.h
http://webservice.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
4.     ../../bin/linux386/soapcpp2 –C –L –x weather.h
 
由于程序并不復(fù)雜,直接給出其源代碼:
#include <iconv.h>

#include 
"soapH.h"
#include 
"WeatherWebServiceSoap12.nsmap"

#define OUTPUT_LEN 2048

int conv_charset(const char *dest, const char *src, char *input, size_t ilen, char *output, size_t olen) {
    iconv_t conv 
= iconv_open(dest, src);
    
if ( conv == (iconv_t) -1 )
        
return -1;
    memset(output, 
0, olen);
    
if ( iconv(conv, &input, &ilen, &output, &olen) )
        
return -1;
    iconv_close(conv);
    
return 0;
}

int main(int argc, char **argv) {
    
if ( argc != 2 && argc != 3 ) {
        printf(
"Usage: %s city_name [end_point]\n", argv[0]);
        exit(
-1);
    }

    
struct soap soap;
    soap_init(
&soap);
    soap_set_mode(
&soap, SOAP_C_UTFSTRING);

    
struct _ns1__getWeatherbyCityName request;
    
struct _ns1__getWeatherbyCityNameResponse response;

    size_t ilen 
= strlen(argv[1]);
    
char output[OUTPUT_LEN];
    
if ( conv_charset("UTF-8""GBK", argv[1], ilen, output, OUTPUT_LEN) )
        request.theCityName 
= argv[1];
    
else
        request.theCityName 
= output;

    
char *endpoint = NULL;
    
if ( argc == 3 )
        endpoint 
= argv[2];
        
if ( soap_call___ns3__getWeatherbyCityName(&soap, endpoint, NULL, &request, &response) == SOAP_OK ) {
        
int element_counter = response.getWeatherbyCityNameResult->__sizestring;
        
int i = 0;
        
for ( i = 0; i < element_counter; i++ ) {
            
switch ( i ) {
                
case 0  : printf("Province          : "); break;
                
case 1  : printf("City              : "); break;
                
case 2  : printf("City code         : "); break;
                
case 3  : printf("City pic. name    : "); break;
                
case 4  : printf("Timestamp         : "); break;
                
case 5  : printf("Temp. of today    : "); break;
                
case 6  : printf("Summary           : "); break;
                
case 7  : printf("Wind              : "); break;
                
case 8  : printf("Icon 1            : "); break;
                
case 9  : printf("Icon 2            : "); break;
                
case 10 : printf("Description       : "); break;
                
case 11 : printf("Reserved          : "); break;
                
case 12 : printf("Temp. of tomorrow : "); break;
                
case 13 : printf("Summary           : "); break;
                
case 14 : printf("Wind              : "); break;
                
case 15 : printf("Icon 1            : "); break;
                
case 16 : printf("Icon 2            : "); break;
                
case 17 : printf("Temp. of af. tmr. : "); break;
                
case 18 : printf("Summary           : "); break;
                
case 19 : printf("Wind              : "); break;
                
case 20 : printf("Icon 1            : "); break;
                
case 21 : printf("Icon 2            : "); break;
                
case 22 : printf("Introduction      : "); break;
                
default : break;
            }
            ilen 
= strlen(response.getWeatherbyCityNameResult->string[i]);
            
if ( conv_charset("GBK""UTF-8", response.getWeatherbyCityNameResult->string[i], ilen, output, OUTPUT_LEN) )
                printf(
"%s\n", response.getWeatherbyCityNameResult->string[i]);
            
else
                printf(
"%s\n", output);
        }
    }
    
else {
        soap_print_fault(
&soap, stderr);
    }

    soap_destroy(
&soap);
    soap_end(
&soap);
    soap_done(
&soap);
    
return 0;
}


編譯命令是:gcc -O2 -o weather weather.c soapC.c soapClient.c ../../stdsoap2.c -I../.. -L../.. –lgsoap

 

基本上與上一節(jié)的股票信息客戶端差不多,唯一不同的是,作為輸入?yún)?shù)的城市名字,首先需要iconv轉(zhuǎn)換編碼,從GBK轉(zhuǎn)到UTF-8,才可以提交給服務(wù)端。各位可以試一下,不作轉(zhuǎn)換的話,無(wú)論輸入什么,服務(wù)端只會(huì)返回北京的天氣預(yù)報(bào),因?yàn)閭魅氲膮?shù)在服務(wù)端產(chǎn)生了亂碼。

 

以下為正常的執(zhí)行結(jié)果,輸入廣州,可以得到廣州的天氣預(yù)報(bào):


如上圖,最后一段的介紹也出現(xiàn)了亂碼,不過(guò)我認(rèn)為這是putty的問(wèn)題,行末的最后一個(gè)全角字符,如果只能顯示一半的話,下一行開(kāi)始將產(chǎn)生亂碼,如果再遇到一個(gè)半角字符,又能顯示正常了。

http://blog.csdn.net/yui/archive/2010/07/23/5758906.aspx
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            一本久久知道综合久久| 久久精品一区二区| 亚洲国产专区校园欧美| 性欧美8khd高清极品| 国产欧美精品在线播放| 久久精品在线播放| 久久九九免费视频| 亚洲精品激情| 一区二区国产日产| 国产日韩欧美中文在线播放| 免费成人av在线| 欧美激情片在线观看| 亚洲午夜精品网| 欧美在线观看日本一区| 亚洲激情第一页| 亚洲视频在线观看| 在线观看成人网| 一区二区精品| 精品999日本| 亚洲精品综合在线| 国产综合自拍| 亚洲片区在线| 韩国一区二区三区美女美女秀| 欧美激情在线狂野欧美精品| 国产精品va| 亚洲高清精品中出| 国产精品毛片高清在线完整版| 欧美gay视频激情| 国产精品永久免费观看| 欧美视频在线一区二区三区| 亚洲精品欧美在线| 亚洲免费中文字幕| 亚洲国产一区视频| 性感少妇一区| 午夜亚洲性色视频| 欧美激情一区二区三区四区| 久久久久国产精品人| 国产精品www色诱视频| 免费视频一区二区三区在线观看| 国产精品三级视频| 一本大道久久精品懂色aⅴ| 欲色影视综合吧| 午夜影视日本亚洲欧洲精品| 亚洲伊人第一页| 欧美精品乱人伦久久久久久 | 欧美二区乱c少妇| 久久久国产精品一区| 国产精品国产a| 999亚洲国产精| 亚洲日本aⅴ片在线观看香蕉| 久久久精品一区| 久久久99爱| 国产视频在线观看一区| 亚洲在线视频网站| 亚洲一区久久久| 国产精品chinese| 艳女tv在线观看国产一区| 99视频精品| 欧美日韩和欧美的一区二区| 亚洲国产一区二区视频| 亚洲精品中文字幕有码专区| 欧美a级理论片| 亚洲福利视频网| 亚洲精品系列| 欧美美女bbbb| 宅男噜噜噜66一区二区| 亚洲专区一区| 国产欧美午夜| 久久精品导航| 欧美激情影音先锋| 亚洲美女性视频| 欧美日韩国产不卡在线看| 亚洲每日更新| 欧美一级大片在线观看| 国产一区二区三区高清| 久久精品成人一区二区三区| 欧美成人一二三| 日韩视频在线永久播放| 欧美日韩在线精品| 亚洲一区二区免费| 久久久综合激的五月天| 影音先锋成人资源站| 欧美激情视频一区二区三区不卡| 亚洲每日更新| 久久久久99精品国产片| 亚洲激情视频网| 欧美日一区二区三区在线观看国产免| 亚洲一区二区三区成人在线视频精品| 久久国产婷婷国产香蕉| 亚洲大片精品永久免费| 欧美日韩国产精品成人| 亚洲男人的天堂在线aⅴ视频| 蜜桃av久久久亚洲精品| 中文日韩在线| 国产一区二区三区在线观看免费视频| 免费成人美女女| 在线午夜精品自拍| 欧美麻豆久久久久久中文| 91久久在线播放| 亚洲图片欧洲图片日韩av| 国产日韩精品电影| 欧美韩日视频| 香蕉精品999视频一区二区| 欧美国产精品一区| 亚洲一区二区视频| 亚洲国产精品久久久久婷婷老年| 欧美日韩国产色综合一二三四| 久久精品国产99国产精品| 亚洲毛片在线观看| 免费影视亚洲| 久久精品国产99国产精品| 一区二区三区欧美在线观看| 伊人婷婷久久| 国产精品一区二区三区免费观看| 女人香蕉久久**毛片精品| 亚洲欧美日韩一区二区三区在线观看 | 亚洲女同在线| 日韩亚洲国产精品| 国内精品久久久久久久97牛牛| 欧美性一二三区| 欧美激情中文字幕在线| 久久久另类综合| 午夜精品美女久久久久av福利| 日韩视频在线一区| 亚洲国产小视频| 欧美成人免费小视频| 久久人人97超碰国产公开结果| 欧美一区二区免费观在线| 亚洲深夜福利| 中文日韩在线视频| 亚洲视频axxx| 一区二区三区四区五区在线| 亚洲精品综合在线| 亚洲精品日日夜夜| 亚洲日本aⅴ片在线观看香蕉| 亚洲国产91| 亚洲国产精品久久久久婷婷老年 | 欧美视频在线免费| 欧美三日本三级少妇三2023 | 国产精品激情| 国产精品视频一区二区高潮| 国产精品久久波多野结衣| 欧美三日本三级少妇三99| 欧美视频久久| 国产精品久久久久久久久久ktv| 欧美日韩一区二区三| 欧美亚州韩日在线看免费版国语版| 欧美日韩精品免费观看| 欧美日韩亚洲不卡| 国产精品久久久久av| 国产精品女主播在线观看| 国产精品五区| 狠狠88综合久久久久综合网| 伊人色综合久久天天五月婷| 最新高清无码专区| 一区二区三区视频在线看| 亚洲欧美另类国产| 久久久久看片| 亚洲国产精品成人va在线观看| 亚洲黄色在线看| 正在播放欧美视频| 欧美综合77777色婷婷| 久久一区亚洲| 欧美日韩国产页| 国产欧美日韩在线观看| 亚洲大胆人体在线| 亚洲天天影视| 久久婷婷国产麻豆91天堂| 亚洲毛片视频| 欧美成人精品一区二区三区| 久久精品一区二区三区不卡牛牛 | 欧美日韩日韩| 国产精品盗摄久久久| 国产精品日韩欧美大师| 国内免费精品永久在线视频| 亚洲人成艺术| 欧美一区二区三区久久精品茉莉花| 久久久久网址| 亚洲精品自在久久| 欧美一区午夜视频在线观看| 欧美华人在线视频| 国产日产欧美精品| 亚洲精品一线二线三线无人区| 欧美亚洲视频在线观看| 亚洲高清一区二| 亚洲欧美日韩成人| 欧美激情1区2区3区| 狠狠干成人综合网| 99视频有精品| 欧美bbbxxxxx| 亚洲欧美在线免费观看| 欧美另类亚洲| 在线观看日产精品| 久久久精品免费视频| 夜夜嗨网站十八久久| 欧美+亚洲+精品+三区| 国内精品久久久| 欧美制服丝袜第一页| 一区二区三区偷拍| 欧美精品一区二区三区在线看午夜|