嗨,我是iOS应用程序和swift的新手,在弄清楚如何将swift与wsdl服务一起使用时遇到了麻烦。因此,我已经在一个spring web应用程序中创建了一些web服务,并且能够在java的一些客户端中使用该web服务。示例如下:
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中做到这一点。
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中工作,这是代码:
- (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);
}只需要有人把它翻译成斯威夫特。
发布于 2015-06-22 15:04:37
我是经过反复试验才得到它的。也许可以让它看起来更好。不管怎么说,就是这样:
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)https://stackoverflow.com/questions/30971798
复制相似问题