Отправка нескольких изображений на веб-сервер

#ios #objective-c #image #ios7 #nsurlconnection

#iOS #objective-c #изображение #ios7 #nsurlconnection

Вопрос:

Код делает меня очень счастливым для размещения изображения на веб-сервере. он работает разумно для одного изображения. Код, который я использовал для публикации одного изображения,

 NSLog(@"%@",requestString);

NSString *url=[NSString stringWithFormat:@"http://37.187.152.236/UserImage.svc/InsertFacialImage?%@",requestString];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init] ;
[request setURL:[NSURL URLWithString:url]];
[request setHTTPMethod:@"POST"];

// Create 'POST' MutableRequest with Data and Other Image Attachment.

NSString *boundary = @"---------------------------14737809831466499882746641449";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[request setValue:contentType forHTTPHeaderField:@"Content-Type"];
NSData *data = UIImageJPEGRepresentation(chosenImage, 0.2f);
[request addValue:@"image/JPEG" forHTTPHeaderField:@"Content-Type"];
NSMutableData *body = [NSMutableData data];
[body appendData:[NSData dataWithData:data]];
[request setHTTPBody:body];
  

Затем мне не удалось преодолеть препятствие, не удалось опубликовать 2 изображения с помощью разных сервисов.Правда о моей неудаче заключается в том, что после загрузки 1-го изображения сервер генерирует ответ, после чего я прикрепляю ответ ко второй службе. я сделал это правильно, но потерпел неудачу, потому что я установил соединение 2 раза для 2 изображений. но команда веб-служб просит меня запустить его в одном соединении.Код, который я использую, который мне нужно изменить, это

Публикация 1-го изображения

  NSString *url=[NSString stringWithFormat:@"http://37.187.152.236/UserImage.svc/InsertObjectImage?%@",requestString];

 NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init] ;
[request setURL:[NSURL URLWithString:url]];
[request setHTTPMethod:@"POST"];

// Create 'POST' MutableRequest with Data and Other Image Attachment.

NSString *boundary = @"---------------------------14737809831466499882746641449";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[request setValue:contentType forHTTPHeaderField:@"Content-Type"];
NSData *data = UIImageJPEGRepresentation(chosenImage1, 0.2f);
[request addValue:@"image/JPEG" forHTTPHeaderField:@"Content-Type"];
NSMutableData *body = [NSMutableData data];
[body appendData:[NSData dataWithData:data]];
[request setHTTPBody:body];
NSData *returnData;
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

NSLog(@"Ret: %@",returnString);

NSURLConnection *connReq = [NSURLConnection connectionWithRequest:request delegate:self];

if (connReq) {

    NSLog(@"Connection Sucessful");
    receivedData = [[NSMutableData alloc]init];

}


else {

    NSLog(@"failed");

}

NSHTTPURLResponse *response = nil;
NSError *error = nil;
NSData *respData = [NSURLConnection sendSynchronousRequest:request returningResponse:amp;response error:amp;error];
NSLog(@"Status code: %ld", (long)[response statusCode]);
  

Генерация ответа

 -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
[self.receivedData appendData:data];
  

}

 -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{

NSLog(@"%@" , error);
  

}

 -(void)connectionDidFinishLoading:(NSURLConnection *)connection{
NSError *e;



jsonDict1 = [NSJSONSerialization JSONObjectWithData:receivedData options: NSJSONReadingMutableContainers error: amp;e];

compareId = [jsonDict1 valueForKey:@"ImageId"];
  

NSLog(@»JSONN%@», jsonDict1);

 compareId = [results.firstObject objectForKey:@"ImageId"];


NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
[defaults setObject:self.compareId forKey:@"Sendy"];
[defaults synchronize];

NSLog(@"compareId:%@",compareId);


results = [NSJSONSerialization JSONObjectWithData:receivedData options:NSJSONReadingMutableContainers error:amp;e];



}
  

}

после этого шага ответ генерируется хорошо, и я могу передать его во вторую строку. так что никаких проблем с ответом сервера нет.

* Опубликовать 2-е изображение *

 NSString *url1=[NSString stringWithFormat:@"http://37.187.152.236/UserImage.svc/UpdateObjectImage?%@",requestString1];

NSMutableURLRequest *request1 = [[NSMutableURLRequest alloc] init] ;
[request1 setURL:[NSURL URLWithString:url1]];
[request1 setHTTPMethod:@"POST"];

// Create 'POST' MutableRequest with Data and Other Image Attachment.

NSString *boundary = @"---------------------------14737809831466499882746641449";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[request1 setValue:contentType forHTTPHeaderField:@"Content-Type"];
NSData *data = UIImageJPEGRepresentation(chosenImage2, 0.2f);
[request1 addValue:@"image/JPEG" forHTTPHeaderField:@"Content-Type"];
NSMutableData *body1 = [NSMutableData data];
[body1 appendData:[NSData dataWithData:data]];
[request1 setHTTPBody:body1];

NSData *returnData;
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

NSLog(@"Ret: %@",returnString);


NSURLConnection *connReq = [NSURLConnection connectionWithRequest:request1 delegate:self];

if (connReq) {

    NSLog(@"Connection Sucessful");
    receivedData = [[NSMutableData alloc]init];

}

else {

    NSLog(@"failed");

}

NSHTTPURLResponse *response = nil;
NSError *error = nil;
NSData *respData = [NSURLConnection sendSynchronousRequest:request1 returningResponse:amp;response error:amp;error];
NSLog(@"Status code: %ld", (long)[response statusCode]);
  

Комментарии:

1. вы сериализуете данные в 3 раза с сервера, в чем причина

2. где я сериализовал 3 раза…

3. я понял. нет необходимости сериализовать его 3 раза. проверьте мое редактирование @Anbu.Karthik

4. jsonDict1 = [NSJSONSerialization JSONObjectWithData: параметры полученных данных: ошибка NSJSONReadingMutableContainers: amp;e]; compareId =[jsonDict1 valueForKey:@»ImageID»]; результаты = [NSJSONSerialization JSONObjectWithData: параметры полученных данных: ошибка NSJSONReadingMutableContainers: amp;e]; compareId = [результаты. firstObject objectForKey:@»ImageID»]; NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults]; [defaults setObject:self.compareId forKey:@»Sendy»]; [синхронизация по умолчанию];

5. в чем смысл этого, k оставить это не ограничение, k с какой проблемой вы сталкиваетесь