내 응용 프로그램에서 이와 비슷한 것을 사용했습니다. 다음과 같이
+ (void)apiRequestWithParameterFromSessionManager:(NSMutableDictionary *)params
serviceName:(NSString *)serviceName
withSuccess:(void (^)(NSURLResponse *response, NSDictionary *responseDic))success
withFailure:(void (^)(NSURLResponse *response, NSError *error))failure {
NSString *paramString = @"";
for (id key in params) {
id value = [params objectForKey:key];
NSLog(@"key->%@, value->%@",key, value);
paramString = [NSString stringWithFormat:@"%@<%@>%@</%@>", paramString, key, value, key];
}
NSLog(@"paramDic->%@",params);
NSString *soapInitialTags = [NSString stringWithFormat:@"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">"
"<SOAP-ENV:Body>"
"<%@ xmlns=\"%@\">"
"<%@Request>"
"<WEBSERVICE>%@</WEBSERVICE>", serviceName, HOME_URL, serviceName, serviceName];
NSString *soapEndingTags = [NSString stringWithFormat:@"</%@Request>"
"</%@>"
"</SOAP-ENV:Body>"
"</SOAP-ENV:Envelope>", serviceName, serviceName];
NSString *soapMessage = [NSString stringWithFormat:@"%@%@%@", soapInitialTags, paramString, soapEndingTags];
NSLog(@"soap message->%@", soapMessage);
NSURL *url = [NSURL URLWithString:BASE_URL];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
[request setHTTPBody:[soapMessage dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPMethod:HTTP_TYPE_POST];
[request addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[request addValue:[NSString stringWithFormat:@"%@%@", HOME_URL, serviceName] forHTTPHeaderField:@"SOAPAction"];
[request addValue:@"text/xml" forHTTPHeaderField:@"Accept"];
/**
* Using AFHTTPSessionManager
*/
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
NSURLSessionDataTask *task = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {
NSLog(@"output :%@", response);
if (error) {
failure(response, error);
}
else {
NSError *error;
NSDictionary *responseXmlDic = [XMLReader dictionaryForXMLData:(NSData *)responseObject error:&error];
NSDictionary *clearXML = [CommonFunctions extractXML:[[responseXmlDic mutableCopy] copy]];
NSDictionary *responseDic = [[[[clearXML objectForKey:@"soap:Envelope"] objectForKey:@"soap:Body"] objectForKey:[NSString stringWithFormat:@"%@Response", serviceName]] objectForKey:[NSString stringWithFormat:@"%@Result", serviceName]];
NSMutableDictionary *finalDic = [[NSMutableDictionary alloc] init];
for (id key in responseDic) {
id value = [responseDic objectForKey:key];
if ([value isKindOfClass:[NSString class]]) {
[finalDic setObject:(NSString *)value forKey:key];
}
else {
[finalDic setObject:@"" forKey:key];
}
}
NSLog(@"response->%@", responseDic);
success(response, finalDic);
}
}];
[task resume];
}
전화 방법 위의 내가 사용하는 별도의 클래스 "HttpService를"에서 방법 아래 쓰기 - - 당신은 당신의 요구 사항에 따라 요청 매개 변수를 편집 할 수 있습니다
NSMutableDictionary *paramDic = [[NSMutableDictionary alloc] init];
[paramDic setObject:loginModel.email.value forKey:@"EMAIL"];
[paramDic setObject:loginModel.password.value forKey:@"PSSWORD"];
[HttpService apiRequestWithParameterFromSessionManager:paramDic serviceName:LOGIN_SERVICE_NAME withSuccess:^(NSURLResponse *response, NSDictionary *responseDic) {
NSLog(@"response->%@", responseDic);
[APP_DELEGATE hideProgressBarIndicator];
}
withFailure:^(NSURLResponse *response, NSError *error) {
}];
는 SO 코드 작성 서비스하지 않습니다 , 무엇을 시도했는지, 지금까지 방문한 링크를 보여주십시오! –
나는 잘못된 방법을 시도하고 있지만 내가 작성하는 방법을 알아야합니다. –