0

setObject forKey を使用して、配列と文字列、およびその他のクライアント情報を含む NSDictionary を作成しました。データを NSLog に記録すると、すべてが見栄えがよくなり、フォーマットは想定どおりです。また、NSDictionary を NSData に変換しました。

NSData *userData = [NSJSONSerialization dataWithJSONObject:userDict options:NSJSONWritingPrettyPrinted error:&error];

私が知る必要があるのは、POST を使用してサーバーにアップロードする方法です。写真をアップロードするための次のコード スニペットを見つけました。私の質問は、単に NSDictionary をパラメーター (要求のパラメーター) として使用できるかということです。それはちょっと大きいです。そうでない場合、NSData オブジェクトの userData を送信するにはどうすればよいですか? 私は AFNetworking が大好きで、すべてのダウンロード ニーズにのみ使用しています。オブジェクトをアップロードするのはこれが初めてです。ありがとう

NSData *imageData = UIImagePNGRepresentation(pageImage);

AFHTTPClient *client= [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@"http://www.SERVER.com"]];


//You can add POST parameteres here
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
                    author, @"author",
                    title, @"title",
                    nil];

NSMutableURLRequest *request = [client multipartFormRequestWithMethod:@"POST" path:@"/PATH/TO/WEBSERVICE.php" parameters:params constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {

//This is the image
[formData appendPartWithFileData: imageData name:@"cover_image" fileName:@"temp.png" mimeType:@"image/png"];


}];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

//Setup Upload block to return progress of file upload
[operation setUploadProgressBlock:^(NSInteger bytesWritten, long long totalBytesWritten,     long long totalBytesExpectedToWrite) {
float progress = totalBytesWritten / (float)totalBytesExpectedToWrite;
NSLog(@"Upload Percentage: %f %%", progress*100);
}];




//Setup Completeion block to return successful or failure
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id     responseObject) {
NSString *response = [operation responseString];
NSLog(@"response: [%@]",response);
//Code to run after webservice returns success response code

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"error: %@", [operation error]);
    //Code to Run if Failed

}];

[operation start];
4

1 に答える 1

0

あなたの質問を完全に理解できるかどうかはわかりませんが、とにかく試してみます。

私の質問は、NSDictionaryをパラメーター(要求のパラメーター)として単純に使用できるかということです。それはちょっと大きいです。

そう思います。試してみてください...最終的に、これらの配列はサーバーに送信されるデータに変換されるため、サーバーがそれを処理できれば問題はありません。

そうでない場合、NSDataオブジェクトuserDataを送信するにはどうすればよいですか?

送信するデータは、投稿したコードで指定されている場所に提供する必要がありますimageData。アップロードするものがファイルを意図していない場合(NSDataについて言及している場合)、を使用する必要がある場合があることに注意してappendPartWithFormData:nameください。これも、サーバー側によって異なります。

これが物事を少し明確にすることを願っています。

于 2013-01-10T17:42:12.760 に答える