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

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++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
電信provisioning系統中,常常需要與遠程服務器實時交換一些數據,以完成用戶的請求。由于簡單對象訪問協議(Simple Object Access Protocol, SOAP)的流行,許多涉及到第三方的應用,我們一般都比較樂意使用SOAP來開發。不過,由于可能涉及到公司的機密,本系列教程的開發實例盡量采用在網上已經公開的Web Service資源。
 
上一節,講解了用iconv解決gSOAP輸出的中文文本亂碼的問題。在本節中,我們用一個天氣預報客戶端的例子,簡述一下gSOAP輸入的中文文本亂碼的問題。
 
Webxml.com.cn提供的天氣預報web服務,endpoint地址是:http://webservice.webxml.com.cn/WebServices/WeatherWebService.asmx,大家可以點擊進去,查看一下該服務的所有對外提供的接口。其中,利用getWeatherbyCityName接口,可以按給定的城市名字查詢該城市的天氣預報,如果輸入的城市名字不能識別,將統一返回北京的天氣預報。
 
根據前三節的內容,我們可以很快地準備好其客戶端存根程序:
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
 
由于程序并不復雜,直接給出其源代碼:
#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

 

基本上與上一節的股票信息客戶端差不多,唯一不同的是,作為輸入參數的城市名字,首先需要iconv轉換編碼,從GBK轉到UTF-8,才可以提交給服務端。各位可以試一下,不作轉換的話,無論輸入什么,服務端只會返回北京的天氣預報,因為傳入的參數在服務端產生了亂碼。

 

以下為正常的執行結果,輸入廣州,可以得到廣州的天氣預報:


如上圖,最后一段的介紹也出現了亂碼,不過我認為這是putty的問題,行末的最后一個全角字符,如果只能顯示一半的話,下一行開始將產生亂碼,如果再遇到一個半角字符,又能顯示正常了。

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>
            亚洲免费网站| 国产日韩欧美| 新狼窝色av性久久久久久| 亚洲午夜精品久久久久久app| 欧美激情四色| 夜夜嗨av一区二区三区四季av | 麻豆91精品91久久久的内涵| 久热精品视频在线观看| 亚洲第一二三四五区| 欧美激情视频一区二区三区免费 | 一区二区日韩伦理片| 亚洲深夜福利在线| 久久不射中文字幕| 欧美电影打屁股sp| 在线亚洲观看| 麻豆精品网站| 国产精品外国| 亚洲毛片在线免费观看| 欧美亚洲色图校园春色| 欧美激情国产日韩| 在线亚洲欧美| 女仆av观看一区| 国产欧美日韩综合精品二区| 亚洲大片一区二区三区| 亚洲欧美日本精品| 欧美国产成人精品| 亚洲免费影视| 欧美日本在线一区| 在线观看视频一区| 欧美一级久久久| 亚洲国产精品福利| 久久精品国产久精国产思思| 欧美日一区二区三区在线观看国产免| 国产欧美在线| 亚洲视频香蕉人妖| 亚洲国产mv| 久久亚洲春色中文字幕久久久| 国产精品v欧美精品v日韩| 亚洲激情一区| 久久综合伊人| 欧美在线一区二区| 国产欧美日韩三级| 欧美精品激情blacked18| 国内精品伊人久久久久av影院| 亚洲一区网站| 夜夜爽99久久国产综合精品女不卡 | 亚洲欧美另类在线观看| 亚洲级视频在线观看免费1级| 亚洲欧美日本国产有色| 欧美日韩和欧美的一区二区| 在线免费高清一区二区三区| 久久青青草原一区二区| 亚洲欧美视频在线观看| 国产精品看片资源| 亚洲欧美日韩一区二区| 99pao成人国产永久免费视频| 欧美电影免费观看大全| 国产亚洲欧美激情| 欧美一区二区三区在线免费观看| 一区二区三区av| 欧美日韩综合在线免费观看| 一区二区三区国产在线| 亚洲日本aⅴ片在线观看香蕉| 欧美a级片网| 亚洲精品欧洲| 99国产精品国产精品毛片| 欧美激情一区二区在线| 欧美区二区三区| 亚洲精品中文字幕有码专区| 欧美v日韩v国产v| 欧美1区视频| 一本一本久久| 亚洲香蕉成视频在线观看| 国产精品亚发布| 久久久免费观看视频| 美国成人直播| 99天天综合性| 亚洲一区二区三区在线视频| 国产乱码精品| 麻豆成人小视频| 欧美国产日韩精品免费观看| 一本一本久久a久久精品牛牛影视| 亚洲日本视频| 国产精品人人做人人爽| 久久精品视频免费| 欧美福利视频网站| 午夜精品久久久久久久蜜桃app| 亚洲影院一区| 亚洲国产成人午夜在线一区| 亚洲人成在线免费观看| 国产精品丝袜白浆摸在线| 免费观看成人www动漫视频| 欧美成人第一页| 性欧美在线看片a免费观看| 久久久久久一区二区| 这里是久久伊人| 久久久青草青青国产亚洲免观| 一本久道久久久| 久久成人免费网| 亚洲一区二区视频在线| 久久精品二区| 亚洲免费在线观看| 你懂的网址国产 欧美| 性欧美激情精品| 欧美日本国产一区| 免费在线看成人av| 国产精品日本一区二区 | 亚洲欧美日韩在线播放| 久久嫩草精品久久久精品| 亚洲欧美在线网| 欧美成人精品在线视频| 欧美中文日韩| 国产精品成人一区二区网站软件 | 午夜久久资源| 一区二区三区久久久| 久久亚洲春色中文字幕| 性欧美激情精品| 欧美日韩精品免费观看| 欧美不卡一区| 黄色成人av| 久久精品国产第一区二区三区最新章节| 亚洲视频综合在线| 欧美大香线蕉线伊人久久国产精品| 狠狠色噜噜狠狠狠狠色吗综合| 在线亚洲欧美视频| 99视频在线观看一区三区| 蜜臀av国产精品久久久久| 久久蜜桃资源一区二区老牛| 国产精品免费观看在线| 99成人在线| 中文av字幕一区| 欧美午夜电影网| 一区二区成人精品| 亚洲综合欧美| 国产精品老女人精品视频| 中国女人久久久| 先锋影音久久久| 国产欧美一区二区三区久久人妖| 亚洲午夜91| 久久国产精品99国产| 国产一区二区三区成人欧美日韩在线观看 | 激情成人亚洲| 久久人人九九| 欧美高清在线播放| 日韩一本二本av| 欧美三级欧美一级| 亚洲欧美综合精品久久成人| 亚洲欧美日本视频在线观看| 国产精品a久久久久| 亚洲免费影视第一页| 久久婷婷激情| 亚洲精品少妇网址| 欧美午夜在线一二页| 欧美一级午夜免费电影| 久久只精品国产| 亚洲精品看片| 国产精品免费福利| 久久久精品国产免费观看同学| 亚洲大片av| 亚洲女同在线| 亚洲成人在线观看视频| 欧美激情综合| 亚洲欧美日韩在线综合| 欧美mv日韩mv亚洲| 亚洲无人区一区| 狠狠爱综合网| 欧美日韩一区二区三区在线| 午夜精品久久久久久久久| 欧美福利小视频| 一本一本久久a久久精品牛牛影视| 国产精品视频一二三| 久久阴道视频| 中国日韩欧美久久久久久久久| 久久一区二区三区av| 在线亚洲电影| 在线观看一区欧美| 国产精品视频精品| 欧美激情第三页| 欧美伊人久久久久久久久影院| 亚洲韩国日本中文字幕| 久久久久久日产精品| 一区二区高清在线| 激情丁香综合| 国产精品视频最多的网站| 欧美激情一区二区三级高清视频| 香蕉久久夜色精品国产使用方法| 亚洲黄色免费电影| 久热精品视频在线观看| 欧美在线日韩| 亚洲免费视频网站| 99综合在线| 亚洲风情亚aⅴ在线发布| 国产午夜精品麻豆| 国产精品伦一区| 欧美精品免费视频| 欧美激情国产日韩| 久久综合伊人| 久久久五月天| 久久精品人人| 欧美一区激情|