gpt4 book ai didi

ios - AFHTTPSessionManager 使用基于 SOAP 的服务

转载 作者:行者123 更新时间:2023-11-29 12:11:16 34 4
gpt4 key购买 nike

我检查了 Stackoverflow 中的几篇文章(thisthis),但没有一篇回答“如何使用 AFHTTPSessionManager 来使用基于 SOAP 的 Web 服务”。

这是不可能的,还是我们需要做一些调整,比如子类化等?

我可以使用 AFHTTPRequestOperation 调用基于 SOAP,但这是我不想使用的,因为我有 XML 和 JSON Web 服务,我正在使用 AFHTTPSessionManager。我希望在我的申请中采用类似的方法。

我使用 RequestOperation 的代码是:

NSString *soapMessage = @"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
"<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/\">n"
"<soap:Body>\n"
"<CelsiusToFahrenheit xmlns=\"http://tempuri.org/\">\n"
"<Celsius>50</Celsius>\n"
"</CelsiusToFahrenheit>\n"
"</soap:Body>\n"
"</soap:Envelope>n";

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://tempuri.org/"]];
[request setValue:@"text/xml" forHTTPHeaderField:@"Content-type"];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[soapMessage dataUsingEncoding:NSUTF8StringEncoding]];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"responseObject = %@", [operation responseString]);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"error = %@", error);
}];

[operation start];

我尝试使用 SessionManager 但这不起作用:(request 与上面的代码片段相同),我得到了 data因为 nilresponse 有一些值,error 也有一些值。

AFHTTPSessionManager *sManager = [[AFHTTPSessionManager alloc] init];

[sManager dataTaskWithRequest:(NSURLRequest *)request
completionHandler:^( NSURLResponse *response, NSData *data, NSError *error){

NSLog(@"Data: %@", data);
NSLog(@"Resp: %@", response);
NSLog(@"Err: %@", error);
}];

最佳答案

我尝试了多个小时,终于能够得到一些响应并且没有错误。这是更新后的代码:

NSString *soapMessage = @"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
"<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/\">n"
"<soap:Body>\n"
"<CelsiusToFahrenheit xmlns=\"http://tempuri.org/\">\n"
"<Celsius>50</Celsius>\n"
"</CelsiusToFahrenheit>\n"
"</soap:Body>\n"
"</soap:Envelope>n";

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://tempuri.org/"]];
[request setValue:@"text/xml" forHTTPHeaderField:@"Content-type"];
[request setHTTPMethod:@"POST"];

[request setHTTPBody:[soapMessage dataUsingEncoding:NSUTF8StringEncoding]];


AFHTTPSessionManager *sManager = [[AFHTTPSessionManager alloc] init];
sManager.responseSerializer = [AFHTTPResponseSerializer serializer];

NSURLSessionDataTask *dataTask = [sManager dataTaskWithRequest:(NSURLRequest *)request
completionHandler:^( NSURLResponse *response, id responseObject, NSError *error){
NSString *resString = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"Data: %@", resString);
//NSLog(@"Resp: %@", [response ]);
NSLog(@"Err: %@", error);
}];
[dataTask resume];

关于ios - AFHTTPSessionManager 使用基于 SOAP 的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33389940/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com