5

誰か?): 私は過去 2 時間、頭を悩ませている問題を抱えています。おそらく、私が見逃している非常に単純で愚かなことです。オペレーション@ AFNetworkingから応答文字列を呼び出すと、構築エラーが発生し続けます...そのようなプロパティがないように....

私のコードを見て、今回は何を台無しにしたのか説明してください:p..ありがとう:)


NSDictionary* paramDict = [NSDictionary dictionaryWithObjectsAndKeys:WebServicemd5Value, WebSermd5Variable, nil]
;
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:webServiceURL]];

[httpClient defaultValueForHeader:@"Accept"];

[httpClient postPath:@"method" parameters:paramDict success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"Response data: %@", responseObject);
    NSLog(@"Reponse String: %@", operation);

// 操作を印刷すると、応答フィールドを含む操作ディクショナリが表示されますが、 // しかし、直接 operation.response を呼び出すと、コンパイラはビルドせず、 // 「AFHTTPRequestOperation のプロパティが見つかりません」と表示されます.... WEIRDESTことはありませんよね?

    NSString* responseString = [NSString stringWithUTF8String:[responseObject bytes]];
    //.. Rest o f my Code....

}failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error retrieving data: %@", error);
}];
4

3 に答える 3

15

NSDictionaryHernan さん、 JSON 応答からを期待する場合AFJSONRequestOperationは、成功コールバックで JSON 辞書を取得するため、 の使用を検討する必要があります。とにかく、から辞書を取得したい場合はresponseObject、次のコードを使用してみてください。

NSError *error = nil;
NSDictionary *JSON = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:&error];
if (error) {
    NSLog(@"Error serializing %@", error);
}
NSLog(@"Dictionary %@", JSON);
于 2012-12-13T08:16:09.507 に答える
5

応答文字列は「操作」オブジェクト内にあると思うので、次のようになります。

...
}failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error retrieving data: %@", operation.responseString);
}];
于 2014-04-03T07:35:49.940 に答える
4

AFNetworking を使用して meetup.com API からコンテンツを取得しようとしているときに (すばらしいフレームワークを提供してくれた Mattt T. に敬意を表します)、同じエラーが発生しました - 「操作を完了できませんでした。(Cocoa エラー 3840)」。私が抱えていた問題は、スウェーデン語の文字「Ø」を含む応答データにあり、解析エラーが発生したことに気付きました。解決策は、AFNetworking クライアントの初期化にヘッダー「Accept-Charset: utf-8」を含めることでした。修理済み!

- (id)initWithBaseURL:(NSURL *)url {
    self = [super initWithBaseURL:url];
    if (!self) {
        return nil;
    }

    [self registerHTTPOperationClass:[AFJSONRequestOperation class]];

    // Accept HTTP Header; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1
    [self setDefaultHeader:@"Accept" value:@"application/json"];
    [self setDefaultHeader:@"Accept-Charset" value:@"utf-8"];

    return self;
}
于 2013-02-19T19:23:31.960 に答える