0

Feedly API でアプリを構築しようとしています。カテゴリを既読としてマークできるようにするには、いくつかのデータを API に投稿する必要があります。私は成功していません。

これは、API が入力として必要とするものです。

{
  "lastReadEntryId": "TSxGHgRh4oAiHxRU9TgPrpYvYVBPjipkmUVSHGYCTY0=_1449255d60a:22c3491:9c6d71ab",
  "action": "markAsRead",
  "categoryIds": [
    "user/c805fcbf-3acf-4302-a97e-d82f9d7c897f/category/design",
    "user/c805fcbf-3acf-4302-a97e-d82f9d7c897f/category/photography"
  ],
  "type": "categories"
}

そして、これが私の方法です:

- (void)markCategoryAsRead: (NSString*)feedID{

    NSLog(@"Feed ID is: %@", feedID);

    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
    NSString *accessToken = [standardUserDefaults objectForKey:@"AccessToken"];

    NSString *feedUrl = [NSURL URLWithString:@"https://sandbox.feedly.com/v3/markers"];

    NSError *error = nil;

    NSDictionary *tmp = [[NSDictionary alloc] initWithObjectsAndKeys:
                         @"markAsRead", @"action",
                         @"categories", @"type",
                         @[feedID], @"categoryIds",
                         @"1367539068016", @"asOf",
                         nil];
    NSData *postdata = [NSJSONSerialization dataWithJSONObject:tmp options:0 error:&error];

    NSLog(@"Postdata is: %@", postdata);

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:feedUrl];
    [request setHTTPMethod:@"POST"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-type"];
    [request addValue:accessToken forHTTPHeaderField:@"Authorization"];

    //[NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]];

    NSError *errror = [[NSError alloc] init];
    NSHTTPURLResponse *response = nil;
    NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&errror];

    NSLog(@"Response code: %ld", (long)[response statusCode]);

    if ([response statusCode] >= 200 && [response statusCode] < 300)
    {
        NSLog(@"It's marked as read.");
    } else {
        if (error) NSLog(@"Error: %@", errror);
        NSLog(@"No success marking this as read. %@", response);
    }
}

400ただし、エラーをスローし続けますbad input。私は何を間違っていますか?

4

2 に答える 2

1

postdata作成後は何もしていません。リクエストに添付してください。

[request setHTTPBody:postData];
于 2015-01-14T21:33:15.323 に答える
0

コードにいくつかの問題があります。ここに私が気づいたいくつかがあります:

  1. を使用していませんpostData
  2. あなたが作成しtmpた辞書は、送信したいと言った辞書とは異なります。lastReadEntryIdたとえば、どこですか?
  3. NSString *feedUrlする必要がありますNSURL *feedUrl
  4. スタイル的には、ディクショナリ リテラル構文を使用してディクショナリを作成する必要があります。これにより、デバッグが容易になります。
于 2015-01-14T21:37:48.303 に答える