Воссоздать данные JSON в Objective-C
Я пытаюсь создать приложение на 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
, Что я делаю неправильно?
2 ответа
Вы ничего не делаете с postdata
после создания. Прикрепите это к запросу.
[request setHTTPBody:postData];
В вашем коде есть несколько проблем. Вот некоторые, которые я заметил:
- Вы не используете
postData
, - Словарь, который вы делаете в
tmp
не похоже на словарь, который вы сказали, что хотели отправить. ГдеlastReadEntryId
, например? NSString *feedUrl
должно бытьNSURL *feedUrl
- Стилистически вы должны использовать буквальный синтаксис словаря для создания словаря. Это облегчит отладку.