#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 с какой проблемой вы сталкиваетесь