1

新しい AFNetworking 2.0 リリースで簡単なリクエストをしようとしていますが、投稿できないようです。サーバーから「テキスト/jsonまたはアプリケーション/json本体を期待しています」という応答が返されますが、AFNetworkingのGitHubページのドキュメントによると、私はすべてをすべきです。また、コードの最後の行にある operation.request.HTTPBody が常に nil のように見えることにも言及する価値があります。

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *request = @{@"email": self.email.text, @"password": self.password.text};
[manager POST:login parameters:request constructingBodyWithBlock:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
  NSLog(@"DONE!");
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Failed to log in: %@", operation.responseString);
    NSLog(@"Here's the request: %@", operation.request.HTTPBody);
}];
4

2 に答える 2

4

ドキュメントによると

POST:parameters:constructingBodyWithBlock:success:failure

はマルチパート POST リクエスト用であり、そのデフォルトのシリアル化は JSON ではありません。

マルチパート POST 要求で AFHTTPRequestOperation を作成して実行します。

使いたい

POST:parameters:success:failure:

代わりに、次のように

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *request = @{@"email": self.email.text, @"password": self.password.text};
[manager POST:login parameters:request success:^(AFHTTPRequestOperation *operation, id responseObject) {
  NSLog(@"DONE!");
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Failed to log in: %@", operation.responseString);
}];
于 2013-10-16T20:54:18.813 に答える
0

試す

- (AFHTTPRequestOperation *)POST:(NSString *)URLString parameters:(NSDictionary *)parameters success:(void ( ^ ) ( AFHTTPRequestOperation *operation , id responseObject ))success failure:(void ( ^ ) ( AFHTTPRequestOperation *operation , NSError *error ))failure

このメソッドは、constructBody ブロックを必要としません。ブロックがゼロになることはないと思います。

于 2013-10-16T20:52:01.577 に答える