2

URL は正しいのですが、リクエストの形式が正しくありません。私は 400 を取得しています。何かアイデアはありますか? API ドキュメントには、JSON 本文の代わりにパラメーターが渡された場合、400 を返す可能性があると記載されています。前もって感謝します。

- (void)postFeedItem:(NSDictionary *)paramDict Response:(void (^)(id))callbackBlock Failure:(void (^)())failure {

NSString *targetUrl = [NSString stringWithFormat:@"%@/services/data/v23.0/chatter/feeds/user-profile/%@/", _appManager.coordinator.credentials.instanceUrl, [_appManager.userInformation objectForKey:@"sfUserId"]];

AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:targetUrl]];
/*
 { "body" :
 {
 Request body example:
 "messageSegments" : [
 {
 "type": "Text",
 "text" : "New post"
 }
 ]
 }
 }
 */

NSArray *arr = [NSArray arrayWithObjects:
                [NSDictionary dictionaryWithObjectsAndKeys:@"Text", @"type",
                 @"New post", @"text",
                 nil],
                nil];
NSDictionary* info = [NSDictionary dictionaryWithObjectsAndKeys:
                      [NSDictionary dictionaryWithObjectsAndKeys:arr, @"messageSegments", nil],
                      @"body",
                      nil];

NSLog(@"JSON: %@", [[NSString alloc] initWithData:[self toJSON:info] encoding:NSUTF8StringEncoding]);

NSMutableURLRequest *request = [client multipartFormRequestWithMethod:@"POST" path:@"feed-items" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    [formData appendData:[self toJSON:info]];
}];

[request setValue:[NSString stringWithFormat:@"OAuth %@",_appManager.coordinator.credentials.accessToken] forHTTPHeaderField:@"Authorization"];
[request addValue:@"false" forHTTPHeaderField:@"X-Chatter-Entity-Encoding"];
[request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
    NSLog(@"success");
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
    NSLog(@"FAILED CHATTER Request: %@ - %@ - %@", [request URL], [request allHTTPHeaderFields], error.description);
}];

[operation start];

}

NSLog は次のとおりです。

2012-09-19 18:10:54.732 RingDNA Free[6018:c07] __47-[ChatterHelper postFeedItem:Response:Failure:]_block_invoke_087 [76 行目] 失敗した CHATTER リクエスト: https://na4.salesforce.com/services/data /v23.0/chatter/feeds/user-profile/00560000001j3paAAA/feed-items- { "Accept-Encoding" = gzip; "Accept-Language" = "en, fr, de, ja, nl, it, es, pt, pt-PT, da, fi, nb, sv, ko, zh-Hans, zh-Hant, ru, pl, tr , uk, ar, hr, cs, el, he, ro, sk, th, id, ms, en-GB, ca, hu, vi, en-us;q=0.8"; Authorization = "OAuth 00D60000000KV29!ARkAQFWhnhOtcGFgVMT4MkZHCV3zG9SY4en66718BiG_ZY59W0gR1iSWA8i.ey_b94vqjRW_RQITALBWmfpPrKTGk"; "Content-Type" = "multipart/form-data; 境界 = 境界 + 0xAbCdEfGbOuNdArY,application/json"; "User-Agent" = "com.ringdna.dreamforce.RingDNA-Free/36 (不明、iPhone OS 5.1、iPad シミュレーター、Scale/1.000000)"; "X-Chatter-Entity-Encoding" = false; } - エラー Domain=com.alamofire.networking.error Code=-1011 "Expected status code [インデックスの数: 100 (1 つの範囲内)、インデックス: (200-299)],

4

1 に答える 1

0

数回試行した後、これを理解しました。基本的に、SFDC は Chatter API に送信するパラメータの順序を検証します。Chatter 投稿を機能させるためのコード サンプルが Github にあります。

https://github.com/kyleroche/Dreamforce-2012

于 2012-11-10T17:57:12.193 に答える