Я новый разработчик IOS, и у меня возникает проблема с головной болью, связанная с использованием multipart для загрузки файла и некоторого текста, я много пробовал hereIOS: получение «400 Bad Request» при использовании multipart/form-data
Код статуса всегда возвращает 400. Я устал тестировать свой веб-сервис другим способом, например, создавать клиент Rest Rest http://www.httpComponent API, используя клиент RestEASY, и оба они успешно работали, как смешно!
Я использую Xcode 6.1.1, мой исходный код:
-(void)uploadPhoto {
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://localhost/my-rest-service"]];
[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
[request setHTTPShouldHandleCookies:NO];
[request setTimeoutInterval:60];
[request setHTTPMethod:@"POST"];
NSData *imageData = UIImageJPEGRepresentation([UIImage imageNamed:@"avatar_temp"], 1.0);
NSString *boundary = @"12345-6789-abc"; //
// set Content-Type in HTTP header
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[request setValue:contentType forHTTPHeaderField: @"Content-Type"];
// post body
NSMutableData *body = [NSMutableData data];
// add params (all params are strings)
[body appendData:[[NSString stringWithFormat:@"%@--", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=%@\r\n\r\n", @"type"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"%@\r\n", @"HELLO"] dataUsingEncoding:NSUTF8StringEncoding]];
// setting the body of the post to the request
[request setHTTPBody:body];
// set the content-length
NSString *postLength = [NSString stringWithFormat:@"%d", [body length]];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue currentQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
if(data.length > 0){
//success
NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"[String] %@", str);
}
}];
}
Любые предложения помогут мое исследование
Благодаря
Покажите нам код, который вы используете для загрузки. –
Привет! Я только что обновил контент –