免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1962 | 回复: 1
打印 上一主题 下一主题

[C] GSOAP编写的web service客户端编译通过执行报错 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-19 13:15 |只看该作者 |倒序浏览
我在网上找的天气预报的wsdl
我的执行过程是这样的
/usr/local/gSOAP/bin/wsdl2h -c -o web.h http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
/usr/local/gSOAP/bin/soapcpp2 -c -C web.h
客户端程序
#include "soapH.h"   
#include "ChinaStockWebServiceSoap.nsmap"   
int main(int argc, char **argv) {  
        if ( argc != 2 ) {  
                printf("Usage: %s stock_code/n", argv[0]);  
                exit(-1);  
        }  
        struct soap soap;  
        soap_init(&soap);  
        soap_set_namespaces(&soap, namespaces);
        struct _ns1__getSupportCity request;  
        struct _ns1__getSupportCityResponse response;  
        request.byProvinceName = argv[1];  
        printf("%s\n", request.byProvinceName);
        char server[256] = {0};
        strcpy(server, "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx");
        if ( soap_call___ns1__getSupportCity(&soap, NULL, NULL, &request, &response) == SOAP_OK ) {  
                int element_counter = response.getSupportCityResult->__sizestring;  
                int i = 0;  
                for ( i = 0; i < element_counter; i++ ) {  
                        switch ( i ) {  
                                case 0  : printf("0        : "); break;  
                                case 1  : printf("1        : "); break;  
                                case 2  : printf("2       : "); break;  
                                case 3  : printf("3      : "); break;  
                                case 4  : printf("4 : "); break;  
                                default : break;  
                        }  
                        printf("%s/n", response.getSupportCityResult->string);   
                }  
        }  
        else
        {
                if(soap.error)
                {
                        printf("==1=========1==soap error:%d ===2========2==\n", soap.error);
                                                                        printf("==1=========1==soap error:%s ===2========2==\n",*soap_faultcode(&soap));
                                                                        printf("==1=========1==soap error: %s ===2========2==\n", *soap_faultstring(&soap));
        //                result = SmsWBS_soap.error;
                 }  
        }  
        soap_destroy(&soap);  
        soap_end(&soap);  
        soap_done(&soap);  
        return 0;  
}  
编译:gcc -O2 -o web web.c soapC.c soapClient.c -lgsoap
可以通过
但是执行的时候打印
all
==1=========1==soap error:12 ===2========2==
==1=========1==soap error:SOAP-ENV:Receiver ===2========2==
?嗾鰾 ---> *鵤(緉0鵤劄?===2========2==
哪位大侠知道这个问题的原因啊,希望不吝赐教,
我找了好长时间也没找到原因

论坛徽章:
0
2 [报告]
发表于 2013-07-23 16:45 |只看该作者
   if ( soap_call___ns1__getSupportCity(&soap, NULL, NULL, &request, &response) == SOAP_OK ) {  
第一个NULL应改为 server才对吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP