-1
AFNetworking 3.0を使用してbodyでPOSTリクエストを送信する方法を尋ねます。 ご迷惑をおかけして申し訳ございません。 AFNetworking's GitHubからafnetworking 3.0でbody dictionaryでPOSTリクエストを送信
AFNetworking 3.0を使用してbodyでPOSTリクエストを送信する方法を尋ねます。 ご迷惑をおかけして申し訳ございません。 AFNetworking's GitHubからafnetworking 3.0でbody dictionaryでPOSTリクエストを送信
:
NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"http://example.com/upload" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileURL:[NSURL fileURLWithPath:@"file://path/to/image.jpg"] name:@"file" fileName:@"filename.jpg" mimeType:@"image/jpeg" error:nil];
//Set the request body here
} error:nil];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
NSURLSessionUploadTask *uploadTask;
uploadTask = [manager
uploadTaskWithStreamedRequest:request
progress:^(NSProgress * _Nonnull uploadProgress) {
// This is not called back on the main queue.
// You are responsible for dispatching to the main queue for UI updates
dispatch_async(dispatch_get_main_queue(), ^{
//Update the progress view
[progressView setProgress:uploadProgress.fractionCompleted];
});
}
completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {
if (error) {
NSLog(@"Error: %@", error);
} else {
NSLog(@"%@ %@", response, responseObject);
}
}];
[uploadTask resume];
編集
上記の答えは、カスタムリクエストボディを設定したい場合は特に便利です。
あなただけのパラメータの簡単なセットをPOSTする必要がある場合は、このようにそれを行うことができます。
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager setResponseSerializer:[AFHTTPResponseSerializer serializer]];
[manager POST:@"http://exaple.com/path" parameters:@{@"param1" : @"foo", @"anotherParameter" : @"bar"} progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
//success block
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
//failure block
}];
私は画像ではなくトークンである文字列を投稿したい –
チェックAFNetworkingドキュメントhttp://cocoadocs.org/docsets/AFNetworking/3.1.0/Classes/AFHTTPSessionManagerを.html。 (NSURLSessionDataTask * task、id _Nullable responseObject))成功した失敗:(null可能なvoid(^ nullableの空の(^)) )(NSURLSessionDataTask * _Nullableタスク、NSError *エラー))失敗]。 – kaushal