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