2015-01-09 3 views
0

Feedly API를 사용하여 기사를 읽음으로 표시하려면 iOS 앱에 메소드를 구현하려고합니다. 그러나, 나는 점점 계속 오류 응답 :이 방법Feedly As Objective-C에서 읽기가 작동하지 않음

{ 
    "errorCode": 400, 
    "errorId": "sandbox-he.2015010906.2770040", 
    "errorMessage": "no data" 
} 

: 그것은 필요로

- (void)markRead:(NSString*)articleID { 
    NSLog(@"Artidle ID is: %@", articleID); 

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

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

    NSError *error = nil; 

    NSString *post =[[NSString alloc] initWithFormat:@"action=markAsRead&type=entries&entryIds=%@",articleID]; 
    NSLog(@"PostData: %@",post); 

    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
    [request setURL:feedUrl]; 
    [request setHTTPMethod:@"POST"]; 
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-type"]; 
    [request setHTTPBody:postData]; 
    [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(@"Success marking this as read."); 

    } else { 
     if (error) NSLog(@"Error: %@", errror); 
     NSLog(@"No success marking this as read."); 
    } 

} 

Feedly의 API를 설명하는이 입력으로 :

내 의견으로는
{ 
    "entryIds": [ 
     "TSxGHgRh4oAiHxRU9TgPrpYvYVBPjipkmUVSHGYCTY0=_14499073085:c034:d32dab1f", 
     "TSxGHgRh4oAiHxRU9TgPrpYvYVBPjipkmUVSHGYCTY0=_1449255d60a:22c3491:9c6d71ab" 
    ], 
    "action": "markAsRead", 
    "type": "entries" 
} 

나 ' 이것을 입력으로 제공하기 때문에 실제로 적절한 응답을 기대했습니다. 그러나, 나는 계속 400을 얻고 있고, 내가 잘못하고있는 것을 알아낼 수 없다. 나는 이것에 대해 몇 시간 동안 머리를 파헤 치고있다. 대신 다음 코드를 사용하여 데이터를 만들어보십시오, 현재의 신체 데이터를 사용

+1

POST를 사용하고 있기 때문에 JSON 객체가 필요합니다. 그러나 데이터가 GET 호출에 대해 서식이 지정된 것 같습니다. – Daniel

+0

* 실제로 * json 형식으로 입력을 제공합니까, 아니면 그냥 의견 *입니까? 그것은 당신이 x-www-form-urlencoded로 게시물 데이터를 다시 포맷 한 것처럼 보입니다. –

+0

그것은 단지 제 의견입니다. 나는 이것을 고치는 방법을 모른다. – user4334509

답변

1

는 :

NSDictionary *bodyDict = [NSDictionary dictionaryWithObjectsAndKeys:@[articleID],@"entryIds", 
          @"markAsRead",@"action", 
          @"entries",@"type", nil]; 

NSError *error; 
NSData *postdata = [NSJSONSerialization dataWithJSONObject:bodyDict options:0 error:&error]; 
[request setHTTPBody:postData]; 

이는 JSON 객체로 몸을 보냅니다.

GET 요청 방법으로 웹 메소드를 호출 할 때 일반적으로 (action=markAsRead&type=entries&entryIds=%@과 함께) 보내는 매개 변수가 사용됩니다. 더 나은 이해를 위해 POST vs GET을보십시오.