forHTTPHeaderField: @ "content-type" для изображения и данных - PullRequest
1 голос
/ 04 февраля 2012

Я хочу отправить изображение пользователя и другую информацию о нем на сервер, используя метод POST, из моего приложения iphone.

мой тип контента указан ниже

NSString *boundary = [NSString stringWithString:@"--"];
        NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
        [request addValue:contentType forHTTPHeaderField: @"Content-Type"];

, но он публикует только изображение,мои другие данные не публикуются на сервере.

И если я использую ниже тип контента, то

[ request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];

, тогда он отправляет только другие данные.не отправлять изображение.

Пожалуйста, предложите мне способ отправки изображения и другой информации.

Ответы [ 2 ]

0 голосов
/ 04 февраля 2012

Кодируйте изображение с помощью Base64 следующим образом

[Base64Coder encodeData:UIImagePNGRepresentation(image)];

Вы можете скачать класс Base64 с по этой ссылке .

Отредактировано : добавлен пример кода

NSString *reqStr = [NSString stringWithFormat:@"iPhone_request=<game><name>%@</name><image>%@</image></game>",txtGameName.text, [Base64Coder encodeData:UIImagePNGRepresentation(imgGame.image)]];

// Replace occurrences of + with %2B
reqStr = [[reqStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"];
reqData = [reqStr dataUsingEncoding:NSUTF8StringEncoding];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:URL]];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:reqData];
0 голосов
/ 04 февраля 2012

Использование ASIHTTPRequest это просто и удобно:)

...