Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios WSDL中Objective-C的SOAP客户端生成器?_Ios_Objective C_Xcode_Soap_Wsdl - Fatal编程技术网

Ios WSDL中Objective-C的SOAP客户端生成器?

Ios WSDL中Objective-C的SOAP客户端生成器?,ios,objective-c,xcode,soap,wsdl,Ios,Objective C,Xcode,Soap,Wsdl,我被困在一个SOAP集成项目中。我需要从iPad应用程序调用一些SOAP Web服务 我有,我需要生成Objective-C类来调用服务调用 Mac developer库有一个,但它链接到的示例代码已损坏() 甚至还说(加了强调): “目前,OS X不提供从WSDL文件提取SOAP函数的高级支持。但是,您可以使用NSXMLParser将WSDL文件从URL读入内存。然后,在文件中搜索特定的方法名或查找与服务关联的URL就相对简单了。您只需稍加努力,就可以提取方法名、数据类型和参数名来构建SOAP

我被困在一个SOAP集成项目中。我需要从iPad应用程序调用一些SOAP Web服务

我有,我需要生成Objective-C类来调用服务调用

Mac developer库有一个,但它链接到的示例代码已损坏()

甚至还说(加了强调):

“目前,OS X不提供从WSDL文件提取SOAP函数的高级支持。但是,您可以使用NSXMLParser将WSDL文件从URL读入内存。然后,在文件中搜索特定的方法名或查找与服务关联的URL就相对简单了。您只需稍加努力,就可以提取方法名、数据类型和参数名来构建SOAP调用。然后,您可以使用Web服务核心框架进行SOAP调用并解析响应。”

我还发现了以下三个生成器;然而,第一个是抛出一个关于一些丢失文件的错误,第二个是在我尝试构建时生成的代码和源源不断的ARC错误(重构不起作用),第三个是paywalled


  • 有人能给我指引正确的方向吗?

    几个月前,我也遇到过同样的情况,目前我正在一个需要连接到SOAP服务的iPad应用程序中工作。我已经有了这些类,但它们是针对我的项目的,我无权共享。不过,我正在制作一个更通用的Objective-C类(在任何情况下都是所有SOAP服务器的最终解决方案)在Github上与世界共享

    首先,您必须设置SOAP消息。它具有如下常见结构:

    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
        // here comes the header information: credentials, connection information. If needed, of course
    </soap:Header>
    <soap:Body>
        // here comes the request parameters. In my case, these parameters are related to a resource called SOAPAction (That identifies the method to be called. e.g getListOfClients). I don't know if it is the same in all servers
    </soap:Body>
    </soap:Envelope>
    
    self.requestURL
    显然是服务器URL。如果请求成功,则服务器的xml响应已准备好进行解析。否则,将显示请求错误描述

    这个页面帮助我找到了解决我遇到的一些问题的方法,它与您上面引用的网站有关:


    我希望这能有所帮助。

    什么是Github repo名称?在我完成之前,它一直在我的本地存储库中。只需检查您拥有的内容。顺便说一句,您在“NSLog(@“Bad SOAP server!”…”错误消息中忘了一个分号。那么,@kmiklas,您找到解决方案了吗?
    NSString *messageLength = [NSString stringWithFormat:@"%lu", (unsigned long)[msg length]];
    
    NSURL *requestURL = [NSURL URLWithString:self.requestURL];
    NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:requestURL cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:30];
    [theRequest addValue:[requestURL host] forHTTPHeaderField:@"Host"];
    [theRequest addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
    [theRequest addValue:soapAction forHTTPHeaderField:@"SOAPAction"];
    [theRequest addValue:messageLength forHTTPHeaderField:@"Content-Length"];
    [theRequest setHTTPMethod:@"POST"];
    [theRequest setHTTPBody:[msg dataUsingEncoding:NSUTF8StringEncoding]];
    
    // sending the request
    
    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:theRequest];
    operation.responseSerializer = [AFHTTPResponseSerializer serializer];
    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSString *xml = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
        NSLog(@"Take the data master Yoda: %@", xml);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Bad SOAP server!. Error: %@", error.description)
    }];
    
    [[NSOperationQueue mainQueue] addOperation:operation];