首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转换wsdl2objc后如何在swift中使用soap服务

转换wsdl2objc后如何在swift中使用soap服务
EN

Stack Overflow用户
提问于 2015-06-22 11:39:15
回答 1查看 364关注 0票数 2

嗨,我是iOS应用程序和swift的新手,在弄清楚如何将swift与wsdl服务一起使用时遇到了麻烦。因此,我已经在一个spring web应用程序中创建了一些web服务,并且能够在java的一些客户端中使用该web服务。示例如下:

代码语言:javascript
复制
    GroupService service = new GroupServiceService()
            .getGroupServiceSoap11();
    GetGroupRequest getGroupRequest = new GetGroupRequest();
    getGroupRequest.setSearchString("abc");
    GetGroupResponse response = service.getGroup(getGroupRequest);

    for (RespondGroup rg : response.getRespondGroup()) {
        System.out.println(rg.getGroupName());
    }

现在,我想在我的iphone应用程序中使用swift语言的服务。首先,我使用wsdl2objc工具创建了objective c类。然后,我让它编译并能够使用swift控制器中的类。然而,我在网上找不到一个例子,告诉我如何在swift中使用这项服务。这些是我可以在swift控制器中调用的类。

GroupServiceService GroupServiceService_getGroupRequest GroupServiceService_getGroupRespond GroupServiceService_respondGroup GroupServiceSoap11Binding GroupServiceSoap11Binding_envelope GroupServiceSoap11Binding_getGroup GroupServiceSoap11BindingOperation GroupServiceSoap11BindingResponse GroupServiceSoap11BindingResponseDelegate

根据wsdl2objc文档https://code.google.com/p/wsdl2objc/wiki/UsageInstructions,它只展示了如何在objective c中做到这一点。

代码语言:javascript
复制
    var binding:(GroupServiceService)GroupServiceSoap11Binding

    var request:GroupServiceService_getGroupRequest
    var response:GroupServiceSoap11BindingResponse

    request.searchString = "abc"

    response = binding.getGroupUsingGetGroupRequest(request)

    response.bodyParts

谁能告诉我如何在swift中使用这些对象来做与我在java客户端中所做的相同的事情?

或者,有没有人能告诉我在swift中使用wsdl的更好方法?

谢谢

另外,我让它在objective C中工作,这是代码:

代码语言:javascript
复制
- (IBAction)button {
    GroupServiceSoap11Binding* binding = [GroupServiceService GroupServiceSoap11Binding];
    GroupServiceSoap11BindingResponse* response;
    GroupServiceService_getGroupRequest* request = [[GroupServiceService_getGroupRequest alloc]init];
    request.searchString = @"123";
    response = [binding getGroupUsingGetGroupRequest:request];
    dispatch_async(dispatch_get_main_queue(), ^{
        [self processResponse:response];
    });

}

-(void) processResponse: (GroupServiceSoap11BindingResponse*)soapResponse
{
    NSArray *responseBodyParts = soapResponse.bodyParts;
    id bodyPart;
    bodyPart = [responseBodyParts objectAtIndex:0];
    GroupServiceService_getGroupResponse *groupResponse = bodyPart;
    NSArray *responseGroupList = [groupResponse respondGroup];
    GroupServiceService_respondGroup *firstRespondGroup = [responseGroupList objectAtIndex:0];
     NSLog(@"%@", firstRespondGroup.groupName);

}

只需要有人把它翻译成斯威夫特。

EN

回答 1

Stack Overflow用户

发布于 2015-06-22 15:04:37

我是经过反复试验才得到它的。也许可以让它看起来更好。不管怎么说,就是这样:

代码语言:javascript
复制
var binding = GroupServiceService.GroupServiceSoap11Binding()
var request = GroupServiceService_getGroupRequest()
request.searchString = "UVA"
var response:GroupServiceSoap11BindingResponse = binding.getGroupUsingGetGroupRequest(request)
var responseBodyParts = response.bodyParts
var bodyPart = responseBodyParts[0] as! GroupServiceService_getGroupResponse
var responseGroupList = bodyPart.respondGroup
var firstRespondGroup = responseGroupList[0] as! GroupServiceService_respondGroup
println(firstRespondGroup.groupName)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30971798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档