2013-10-14 47 views
2

我试图从wsdl文件中为iOS生成源代码。我已经偶然发现了几个工具,至此wsclient++sudz c似乎至少可以工作。但我需要使用相同的soap界面向不同的服务器发送请求,具体取决于iOS应用的状态。我可以使用sudzc更改服务器网址吗?

在由wsclient产生我可以设置服务器URL的源代码通过

MyWebService* ws = [MyWebService service]; 
// // set base url for entire application 
[SoapWebService setGlobalBaseUrl: @"http://domain.com"]; 
NSError* error = nil; 
Result* rs = [ws callMethod: p1 param2:p2 error:&error]; 

这会我让我做这样的事情

if(condition1) [SoapWebService setGlobalBaseUrl: @"http://betaserver.com"]; 
if(condition2) [SoapWebService setGlobalBaseUrl: @"http://developserver.com"]; 
if(condition3) [SoapWebService setGlobalBaseUrl: @"http://liveserver.com"]; 

有没有办法来归档与类似的东西源代码由sudzc生成?

回答

0

只要肥皂是相同的响应,你不应该有使用你的代码的问题。有一个文件存储服务器地址。由sudzc生成的代码可以修改为任何地址。我实际上创建了一个动态的服务器方式。我会找到我用来做这件事的文件和代码。 您可以在项目中搜索您用于sudzc的域名。

我现在不在Mac前面,但稍后会更新。

UPDATE: 

好吧,所以我创建了一个设置选项卡,并允许用户在必要时输入特定的IP地址。它将IP地址保存在字典中,然后该文件从字典中检索它。我留下了一些我原来的评论,并在代码中添加了一些,这样你就可以看到两种方式。如果感到困惑,请告诉我,我会再次编辑。在我sudzc生成的代码我修改了文件,以这样的:

/* 
wsUpdateQOH.m 
The implementation classes and methods for the wsUpdateQOH web service. 
Generated by SudzC.com 
*/ 

#import "wsUpdateQOH.h"   
#import "Soap.h" 
#import "Settings.h" 
#define URL @"http://%@/webServiceAddress/updateqoh.asmx" 




/* Implementation of the service */ 

@implementation wsUpdateQOH 

- (id) init 
{ 
    if(self = [super init]) 
    { 
     // take out hard coded address and add variable to have a dynamic IP @"http://www.site.com/webServiceAddress/updateqoh.asmx" 
     // here is the dictionary return and format of the url string 
     NSString *savedValue = [[NSUserDefaults standardUserDefaults] stringForKey:@"serverIP"]; 
     self.serviceUrl = [[NSString alloc] initWithFormat:URL, savedValue]; 

     // uncomment for a hard coded address self.serviceUrl = @"http://%@/webServiceAddress/updateqoh.asmx"; 
     self.namespace = @"http://tempuri.org/webServiceAddress/UpdateQOH"; 
     self.headers = nil; 
     self.logging = NO; 

    } 
    return self; 

} 

- (id) initWithUsername: (NSString*) username andPassword: (NSString*) password { 
    if(self = [super initWithUsername:username andPassword:password]) { 
    } 
    return self; 
} 

+ (wsUpdateQOH*) service { 
    return [wsUpdateQOH serviceWithUsername:nil andPassword:nil]; 
} 

+ (wsUpdateQOH*) serviceWithUsername: (NSString*) username andPassword: (NSString*) password { 
    return [[[wsUpdateQOH alloc] initWithUsername:username andPassword:password] autorelease]; 
} 
// *** Below here is the soap actions *** 
+0

我想看看你的代码,因为每个generted功能有类似SoapRequest * _request = [SoapRequest创建:_target动作:_action服务:自我的soapAction: @“http://server.com/xyz/GetSecurityToken”postData:_envelope deserializeTo:@“NSString”];这看起来好像我可以设置一个全球服务器网址:/ – user2879242

+0

我为你更新了它。 – iDev

相关问题