AFHTTPRequestOperation работает нормально, но AFHTTPSessionManager не работает

Я делаю SOAP-запрос с веб-сервисом, использующим AFNetworking2.2.1 . Я прочитал документацию по AFNetworking, он говорит, что хотя AFHTTPRequestOperationManager обычно это лучший способ делать запросы, AFHTTPRequestOperation может быть использован сам по себе. Это означает, что рекомендуемым способом является использование AFHTTPSessionManagerВо-первых, я использую AFHTTPSessionManager, но это не работает. Затем я попытался AFHTTPRequestOperation, это работает отлично. Это действительно смутило меня.

Вот два снимка кода. Он не работает при использовании AFHTTPSessionManagerв то время как он отлично работает с AFHTTPRequestOperation,

У меня вопрос, почему AFHTTPSessionManager не работает и как его изменить.

[[SLAppNetAPIClient sharedClient] POST:@"webservices/wsLogin.php?wsdl" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    NSString *soapMessage = [NSString stringWithFormat:
                             @"<?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"
                             "<DGLogInWork xmlns=\"http://10.0.0.22:3301/\">\n"
                             "<szHostName>%@</szHostName>\n"
                             "<szLoginMAC>%@</szLoginMAC>\n"
                             "<szLoginIP>%@</szLoginIP>\n"
                             "</DGLogInWork>\n"
                             "</soap:Body>\n"
                             "</soap:Envelope>\n", [SLDevice name], [SLDevice deviceMAC], [SLDevice deviceIP]];
    debugLog(@"soapMessage:%@", soapMessage);
    NSDictionary *header = @{@"Content-Type": @"text/xml"};
    NSData *body = [soapMessage dataUsingEncoding:NSUTF8StringEncoding];
    [formData appendPartWithHeaders:header body:body];
} success:^(NSURLSessionDataTask *task, id responseObject) {
    debugLog(@"responseObject~~~: %@", responseObject);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
    debugLog(@"error :%@", error);
}];

Это с помощью AFHTTPSessionManager,SLAppNetAPIClient это подкласс AFHTTPSessionManager,

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://10.0.0.22:3301/webservices/wsLogin.php?wsdl"]];
[request setValue:@"text/xml" forHTTPHeaderField:@"Content-type"];
[request setHTTPMethod:@"POST"];
NSString *soapMessage = [NSString stringWithFormat:
                         @"<?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"
                         "<DGLogInWork xmlns=\"http://10.0.0.22:3301/\">\n"
                         "<szHostName>%@</szHostName>\n"
                         "<szLoginMAC>%@</szLoginMAC>\n"
                         "<szLoginIP>%@</szLoginIP>\n"
                         "</DGLogInWork>\n"
                         "</soap:Body>\n"
                         "</soap:Envelope>\n", [SLDevice name], [SLDevice deviceMAC], [SLDevice deviceIP]];
[request setHTTPBody:[soapMessage dataUsingEncoding:NSUTF8StringEncoding]];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    debugLog(@"responseObject = %@", [operation responseString]);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    debugLog(@"error = %@", error);
}];
[operation start];

Это использует AFHTTPRequestOperation,

Я не знаю, в чем разница между ними. Надеюсь, кто-то может помочь. Большое спасибо.

0 ответов

Другие вопросы по тегам