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

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>
            99视频精品在线| 久久精品盗摄| 最新国产の精品合集bt伙计| 久久久亚洲成人| 亚洲大胆美女视频| 亚洲国产精品99久久久久久久久| 久久一二三四| 一本综合久久| 亚洲性线免费观看视频成熟| 国产亚洲毛片| 欧美激情导航| 国产精品毛片a∨一区二区三区| 午夜精品999| 久久九九有精品国产23| 亚洲国产天堂久久综合网| 日韩视频在线免费| 国产一区香蕉久久| 亚洲激情国产精品| 国产区欧美区日韩区| 欧美大色视频| 国产精品久久久久久久7电影| 久久久欧美精品sm网站| 欧美激情亚洲| 久久乐国产精品| 欧美啪啪一区| 久久久久网址| 欧美日韩中文字幕精品| 久久婷婷综合激情| 欧美三区免费完整视频在线观看| 久久精品国产清高在天天线| 欧美精品一区二区三区久久久竹菊 | 亚洲国产精品一区二区三区| 欧美视频官网| 麻豆av一区二区三区| 欧美视频网站| 裸体女人亚洲精品一区| 国产精品久久久久久久久久久久久 | 亚洲国产成人午夜在线一区| av不卡在线| 亚洲欧洲美洲综合色网| 午夜欧美大片免费观看| 正在播放欧美视频| 免费观看日韩| 噜噜爱69成人精品| 国产乱码精品一区二区三区五月婷| 亚洲福利国产| 亚洲国产成人av在线| 午夜欧美大片免费观看| 亚洲一卡久久| 欧美精品国产一区| 欧美国产视频日韩| 亚洲第一中文字幕| 亚洲欧美日韩精品一区二区| 亚洲一区国产一区| 欧美日本在线播放| 亚洲国产片色| 亚洲精品一区二区三区樱花| 久久亚洲图片| 男人插女人欧美| 在线观看日韩国产| 久久久久久久高潮| 久久躁日日躁aaaaxxxx| 韩日在线一区| 久久久久一区二区三区四区| 开心色5月久久精品| 精品动漫一区| 久久精品视频一| 老色批av在线精品| 一区免费观看| 蜜桃av一区二区三区| 亚洲福利电影| 99综合在线| 国产精品福利av| 亚洲小说欧美另类社区| 欧美在线观看视频一区二区| 国产一区二区三区不卡在线观看| 欧美一级在线视频| 男女精品视频| 99re成人精品视频| 国产精品国产馆在线真实露脸| 一区二区三区久久久| 性伦欧美刺激片在线观看| 国产日韩精品一区| 老鸭窝亚洲一区二区三区| 亚洲国产精品久久久久久女王| 99精品免费视频| 国产精品久久久久aaaa樱花| 欧美一区午夜视频在线观看| 欧美国产精品中文字幕| 亚洲视频久久| 韩国v欧美v日本v亚洲v| 欧美凹凸一区二区三区视频| 夜夜嗨av一区二区三区| 久久精品免费电影| 亚洲国产va精品久久久不卡综合| 欧美日韩另类在线| 欧美亚洲免费电影| 91久久午夜| 久久av一区二区三区| 亚洲人成亚洲人成在线观看图片| 欧美色网在线| 久久久亚洲精品一区二区三区 | 欧美搞黄网站| 亚洲综合精品一区二区| 尤物yw午夜国产精品视频| 欧美日韩视频免费播放| 久久精品99久久香蕉国产色戒| 91久久在线视频| 久久综合九色综合久99| 亚洲一区二区免费| 亚洲国产成人精品久久久国产成人一区| 欧美日韩国产大片| 久久久噜噜噜久久| 亚洲夜间福利| 亚洲人成网站在线播| 久久午夜视频| 性欧美xxxx视频在线观看| 99视频精品在线| 亚洲国产欧洲综合997久久| 国产精品一区二区三区四区五区 | 欧美一区91| 99re6热只有精品免费观看| 免费久久99精品国产自| 久久精品首页| 亚洲欧美国产视频| 亚洲视频免费在线| 亚洲精品你懂的| 亚洲电影av在线| 激情丁香综合| 国产午夜精品一区二区三区视频| 国产精品video| 欧美日本韩国一区| 欧美激情国产精品| 老牛影视一区二区三区| 久久中文精品| 另类激情亚洲| 免费在线视频一区| 乱中年女人伦av一区二区| 久久蜜臀精品av| 久久久中精品2020中文| 久久免费视频一区| 久久一区亚洲| 女仆av观看一区| 欧美成人黄色小视频| 免费在线欧美黄色| 欧美福利视频在线观看| 欧美国产精品劲爆| 欧美日本一区二区高清播放视频| 欧美区在线播放| 欧美日韩亚洲高清一区二区| 欧美日韩精品免费观看视频完整| 欧美日韩精品在线视频| 欧美少妇一区| 国产欧美日韩伦理| 国内精品久久久久久 | 国产一区二区三区黄| 国内精品视频在线观看| 尤物九九久久国产精品的特点| 亚洲第一伊人| 一区二区成人精品 | 亚洲国产精品va在线看黑人| 亚洲国产精品va| 99国产精品私拍| 亚洲欧美另类在线| 久久天堂国产精品| 欧美激情综合| 亚洲午夜极品| 久久精品视频在线播放| 女人色偷偷aa久久天堂| 欧美三日本三级少妇三2023| 国产毛片精品国产一区二区三区| 国产午夜精品理论片a级大结局| 在线看视频不卡| 一区二区毛片| 久久久精品免费视频| 亚洲国产裸拍裸体视频在线观看乱了| 日韩午夜激情电影| 欧美综合国产精品久久丁香| 欧美成在线观看| 国产精品久久久久婷婷| 亚洲国产91| 小辣椒精品导航| 欧美激情精品久久久久久| 这里只有精品视频在线| 久久一区二区三区四区| 国产精品白丝黑袜喷水久久久 | 欧美日韩午夜激情| 国产一区二区三区免费在线观看| 亚洲精品一品区二品区三品区| 午夜精品视频一区| 亚洲国产美女| 久久国产精品亚洲va麻豆| 欧美日韩精品免费观看视频完整| 黑人极品videos精品欧美裸| 在线视频欧美日韩| 亚洲成人自拍视频| 久久国产精品99精品国产| 国产精品成人v| 亚洲裸体俱乐部裸体舞表演av| 久久久久成人网|