AFNetworkingを使用してjsonデータをWebサービスに投稿し、json応答を返しています。ただし、これらのPOSTにマルチパートフォームデータも追加したいと思います。これを行うと(最初に追加したパラメーターがなくても)、完了ブロックは起動しません。進行状況ブロックが起動し、ファイルが正しくアップロードされていることがわかります。
AFNetworkingでこのような画像を投稿した経験はありますか?最新のAFNetworkingソース/バージョンを使用しています。
これは、jsonを含む辞書を投稿するための私の最初のコードです。これは正常に機能します。
NSMutableDictionary *postdata = [[NSMutableDictionary alloc] init];
[postdata setObject:[postdictionary JSONString] forKey:@"request"];
NSMutableURLRequest *jsonRequest = [httpClient requestWithMethod:@"POST"
path:path
parameters:postdata];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:jsonRequest success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {// Success} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {// Failure }];
[operation start];
これは、画像を送信するためのコードのバージョンです(機能しません)
NSMutableURLRequest *jsonRequest jsonRequest = [httpClient multipartFormRequestWithMethod:@"POST" path:path parameters:postdata constructingBodyWithBlock: ^(id <AFMultipartFormData> formData) {
[formData appendPartWithFileData:imageData name:@"photo" fileName:@"photo.jpg" mimeType:@"image/jpeg"];
[formData throttleBandwidthWithPacketSize:5000 delay:0.1];
}];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:jsonRequest];
[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);
}];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Upload succes");
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Upload failed");
}];
[operation start];