14

からPOSTリクエストを行っているときに、error.userInfoでこの応答を受け取りAFNetworkingます。明らかなものが欠けているか、サーバー側で修正する必要があるかを誰かに教えてもらえますか?

リクエストがエラーで失敗しました:Error Domain = AFNetworkingErrorDomain Code = -1016 "Expected content type {(" text / json "、" application / json "、" text / javascript ")}、got text / html" UserInfo = 0x6d7a730 {NSLocalizedRecoverySuggestion =インデックステスト、AFNetworkingOperationFailingURLResponseErrorKey =、NSErrorFailingURLKey = http://54.245.14.201/、NSLocalizedDescription =期待されるコンテンツタイプ{( "text / json"、 "application / json"、 "text / javascript")}、get text / html、AFNetworkingOperationFailingURLRequestErrorKey = http://54.245.14.201/>}、{AFNetworkingOperationFailingURLRequestErrorKey = "http://54.245.14.201/>"; AFNetworkingOperationFailingURLResponseErrorKey = ""; NSErrorFailingURLKey = "http://54.245.14.201/" ; NSLocalizedDescription = "予期されるコンテンツタイプ{(\ n \" text / json \ "、\ n \" application / json \ "、\ n
\ "text / javascript \" \ n)}、get text / html "; NSLocalizedRecoverySuggestion =" index test ";}

そして、私はこのコードを使用しています。

AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
[httpClient registerHTTPOperationClass:[AFJSONRequestOperation class]];
[httpClient setDefaultHeader:@"Accept" value:@"application/json"];
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
                        @"Ans", @"name",
                        @"29", @"age",
                        nil];

NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST" path:@"/" parameters:params];

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
    success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
        NSLog(@"Success");
        NSLog(@"%@",JSON);

    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
        NSLog(@"Request Failed with Error: %@, %@", error, error.userInfo);
        NSLog(@"Failure");
}];

[operation start];
[operation waitUntilFinished];
4

3 に答える 3

46

デフォルトでAFJSONRequestOperationは、サーバーから「text / json」、「application / json」、または「text / javascript」のコンテンツタイプのみを受け入れますが、「text/html」を取得しています。

サーバーで修正する方が良いでしょうが、アプリで許容できるものとして「text/html」コンテンツタイプを追加することもできます。

[AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"text/html"]];

それは私のために働いた、これが役立つことを願っています!

于 2012-10-04T12:01:14.200 に答える
4

このPOSTリクエストを送信しましたAFHTTPClientか?その場合は、その操作クラスを設定する必要があります。

AFHTTPClient * client = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:@"http://localhost:8080"]];
// ...
[client registerHTTPOperationClass:[AFJSONRequestOperation class]];
[client setDefaultHeader:@"Accept" value:@"application/json"];
// ...

// EDIT: Use AFHTTPClient's POST method
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
                         @"Ans", @"name",
                         @"29",  @"age", nil];

// POST, and for GET request, you need to use |-getPath:parameters:success:failure:|
[client postPath:@"/"
      parameters:params
         success:^(AFHTTPRequestOperation *operation, id responseObject) {
           NSLog(@"RESPONSE: %@", responseObject);
           // ...
         }
         failure:^(AFHTTPRequestOperation *operation, NSError *error) {
           if (error)
             NSLog(@"%@", [error localizedDescription]);
           // ...
         }
于 2012-09-16T14:51:21.373 に答える
0

このコードに値を設定し、それがあなたのために働くかどうかを確認してください

 AFHTTPClient *httpClient = [[AFHTTPClient alloc]initWithBaseURL:[NSURL URLWithString:kBASEURL]];
        NSString *_path = [NSString stringWithFormat:@"groups/"];
        _path = [_path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        NSLog(@"%s %@",__PRETTY_FUNCTION__,_path);
        NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST" 
                                                                path:_path
                                                          parameters:postParams];
        [httpClient release];

        AFJSONRequestOperation *operation = [AFJSONRequestOperation 
                                             JSONRequestOperationWithRequest:request
                                             success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
                                                 if ([JSON isKindOfClass:[NSArray class]] || [JSON isKindOfClass:[NSDictionary class]]) {
                                                     completed(JSON);
                                                 }
                                                 else {
                                                 }
                                                 [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];                                             

                                             } 
                                             failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
                                                 NSLog(@" response %@  \n error %@ \n JSON %@",response,error,JSON);
                                                 [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];                                         
                                                 errored(error);
                                             }];

        NSOperationQueue *queue = [[[NSOperationQueue alloc] init] autorelease];
        [queue addOperation:operation];
        [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];   
于 2012-09-16T15:29:08.607 に答える