2013-10-14 49 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

相關問題