1

末尾の '/' (または欠落) が原因でパターン マッチングが失敗する、この性質の投稿をかなりの数見てきました。

ただし、私の問題は、一致するパターンがないことです。私のエラーは次のようになります。

「ロードされた応答と一致する応答記述子がありません。」UserInfo=0xcb8a660 {NSErrorFailingURLStringKey= http://domain.herokuapp.com/auth/identity/callback , NSLocalizedFailureReason=URL から 200 レスポンスがロードされました ' http://domain.herokuapp.com/auth/identity/callback ',すべて (3) の応答記述子と一致しませんでした: http://domain.herokuapp.com pathPattern=(null) statusCodes=200-299> 一致しませんでした: 応答パス '/auth/identity/callback' はパスと一致しませんでしたパターン '(null)'。

「パスパターン '(null)'と一致しませんでした」が問題だと思います。

objectmanager と HttpClient のセットアップ:

+ (void) fireUpRestkit
{
    RKLogConfigureByName("RestKit/Network", RKLogLevelTrace);

    //base URL @"http://domain.herokuapp.com"
    NSURL *baseURL = [[SCURLManager sharedInstance] baseURL];
    AFHTTPClient * client = [AFHTTPClient clientWithBaseURL:baseURL];

    [client setDefaultHeader:@"Accept" value:RKMIMETypeJSON];

    RKObjectManager *objectManager = [[RKObjectManager alloc] initWithHTTPClient:client];
    NSAssert(objectManager, @"objectManager did not instantiate correctly");
}

私のリクエストは次のようになります。

[[RKObjectManager sharedManager] postObject:user
                                           path:/auth/identity/callback"
                                     parameters:nil
                                        success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {

私の記述子は次のように設定されています:

    RKObjectManager *objectManager = [RKObjectManager sharedManager];

RKObjectMapping *userMapping = [RKObjectMapping mappingForClass:[SCUserEntity class]];
[userMapping addAttributeMappingsFromDictionary:[SCUserEntity keyMapping]];

RKRequestDescriptor * requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:userMapping.inverseMapping
                                                                                objectClass:[SCUserEntity class]
                                                                                rootKeyPath:nil
                                                                                     method:RKRequestMethodPOST];

RKResponseDescriptor * responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:userMapping
                                                                                         method:RKRequestMethodGET
                                                                                    pathPattern:nil
                                                                                        keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

[objectManager addResponseDescriptor:responseDescriptor];
[objectManager addRequestDescriptor:requestDescriptor];

リクエストが返されたときにpostRequestを実行しているように見えないときに私が与えるパターンの理由を見つけることができません。buildResponseMappingsDictionaryおよびその後のmatch~ メソッドをステップ実行しました。リクエストが行われると、それらはすべて正しい記述子を返しますが、リクエストがマッピングを必要とする場合、それは機能しません。

サーバーから 200 OK を受け取りました。リクエストとレスポンスの両方の本文が表示され、正しいように見えます。

誰かがおそらく明らかな欠落部分を見つけるのを手伝ってくれることを願っています:)

4

1 に答える 1

5

パス パターンとは関係ありません。その方法です。

あなたが使用している:

[[RKObjectManager sharedManager] postObject:user ...

しかし、あなたは応答記述子を持っています:

method:RKRequestMethodGET

つまり、1 つは POST 用で、もう 1 つは GET 用です。

于 2013-10-09T15:49:27.310 に答える