2

我正在尝试wsdliOS. 我偶然发现了几个工具,到目前为止wsclient++sudzc 至少似乎可以工作。soap但是我需要根据应用程序的状态,向具有相同接口的不同服务器发送请求iOS

在生成的源代码中,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

4

1 回答 1

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 *** 
于 2013-10-25T18:55:24.633 回答