Skip to content

likanjie/LGgSOAP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

#gSoap使用教程

  • 把demo里的gsoap文件夹里的5个文件拷贝到你的项目中 如图: gsoap文件
  • 在gsoap文件夹里新建一个server.h文件 如图: 建server.h文件
  • 在server.h里写接口:固定写法: int ns__方法名(参数,返回值);

如图: 写接口

  • 打开终端cd到项目中的gsoap文件夹中,然后编写命令行编译接口: ./soapcpp2 -C -x server.h

然后生成如图的文件(Compilation successful表示编译成功) 编写命令行

  • 在项目中右击Add files to...添加gsoap文件夹 如图 添加文件
  • 把一些没用的文件给删掉 删掉文件
  • command + b编译之后出现这些错误,解决方法Foundation头文件:(#import <Foundation/Foundation.h>) -添加头文件
  • 再次编译之后还报这些错误 arc报错 解决方法:MRC和ARC混编 解决方法
  • 再次编译,还是报错: 报错 解决方法:把main.m文件的后缀改为.mm,然后在main.mm文件中引入头文件 引入头文件
  • 再次编译之后已经编译成功,但会出现一百多个警告 警告 解决方法:在所在的文件中加 -w 然后编译就会全部通过了 编译通过
  • 调用接口时,需要在所在的控制器中把后缀名改为.mm,因为gsoap是用C++写,得兼容。并引入gsoap头文件 兼容C++
  • 写调用接口代码
struct soap *soap = soap_new();
    
    if (soap_register_plugin(soap, soap_ios) == SOAP_OK) {
        
        soap_ios_setcachepolicy(soap, NSURLRequestReturnCacheDataElseLoad);
        
        //请求时间 单位为秒
        soap_ios_settimeoutinterval(soap, 3);
        
        //转码
        soap_set_mode(soap, SOAP_C_UTFSTRING);
        
        //接收值
        std::string str;
        
        //访问地址
        const char *http = [@"http://~~~~~~~~~/" UTF8String];
        //命名空间
        const char *blank = [@"http://tempuri.org/xx" UTF8String];
        
        /**
         *  请求返回的状态
         *
         *  @param soap        soap
         *  @param http        访问地址
         *  @param blank       命名空间
         *  @param Secret_char 参数
         *  @param str         请求返回的数据
         *
         *  @return 返回请求状态
         */
        int status = soap_call_ns__GetCity(soap, http, blank, Secret_char, &str);
        
        soap_free_temp(soap);
        
        if (status == SOAP_OK) { //请求数据成功
            
            NSString *resultString = [NSString stringWithUTF8String:str.c_str()];
            
            //请求结果
            NSLog(@"%@",resultString);
            
        }else{//请求数据失败
            
            soap_print_fault(soap, stderr);
        }
    }
    
    soap_end(soap);
    soap_free(soap);

返回的数据: 返回的数据

###提示 以后写接口时在server.h里写接口并保存,然后在终端中cd到server.h的文件夹中,执行命令:./soapcpp2 -C -x server.h 当出现 Compilation successful 时表示已经编译成功 以后在想哪个控制器请求数据时,就引入两个文件#import "soapStub.h" #import "gsoapios.h"。 只修改int status = soap_call_ns__方法名(参数,参数,结果)的代码;

About

iOS:gSoap请求服务器数据

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published