1. ホーム
  2. ios

[解決済み] AFNetworking 投稿のお願い

2023-06-30 21:10:31

質問

私はobj-cの初心者で、いくつかのプロジェクトでasihttpを使用しています。asihttpでpost requestを行う場合、このように行われます。

    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
    [request setPostValue:height forKey:@"user[height]"];
    [request setPostValue:weight forKey:@"user[weight]"];
    [request setDelegate:self];
    [request startAsynchronous];

AFNetworkingでこれを行うには、どのようなコード例があるのでしょうか?

私はすでにAFNetworkingで動作するJson getrequestを得たが、このpost requestは私にいくつかの問題を与えています。事前に助けをありがとうございます。

どのように解決するのですか?

まず最初に、AFNetworking を使うべきかどうかを検討する必要があることを付け加えておきます (この回答は最初に書いてから 6 年経っても人気があるので...)。NSURLSession は iOS 7 で追加され、多くの場合 AFNetworking を使用する必要がないことを意味し、サード パーティ ライブラリが 1 つ減ることは常によいことです。

AFNetworking 3.0 の場合。

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
NSDictionary *params = @{@"user[height]": height,
                         @"user[weight]": weight};
[manager POST:@"https://example.com/myobject" parameters:params progress:nil success:^(NSURLSessionTask *task, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(NSURLSessionTask *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

AFNetworking 2.0用(そして新しいNSDictionary構文も使用)。

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *params = @{@"user[height]": height,
                         @"user[weight]": weight};
[manager POST:@"https://example.com/myobject" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

AFNetworking 1.0を使っていて行き詰ったときは、この方法でやる必要があります。

NSURL *url = [NSURL URLWithString:@"https://example.com/"];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];

NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
                        height, @"user[height]",
                        weight, @"user[weight]",
                        nil];
[httpClient postPath:@"/myobject" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSString *responseStr = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
    NSLog(@"Request Successful, response '%@'", responseStr);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"[HTTPClient Error]: %@", error.localizedDescription);
}];