0
NSString *username = @"username";
NSString *password = @"password";
NSURL *loginurl = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.reddit.com/api/login/%@",username]];
NSMutableURLRequest *loginrequest = [NSMutableURLRequest requestWithURL:loginurl];
[loginrequest setHTTPMethod:@"POST"];
NSData *loginRequestBody = [[NSString stringWithFormat:@"api_type=json&user=%@&passwd=%@",username,password] dataUsingEncoding:NSUTF8StringEncoding];
[loginrequest setHTTPBody:loginRequestBody];
NSURLResponse *loginResponse = NULL;
NSError *loginRequestError = NULL;
NSData *loginResponseData = [NSURLConnection sendSynchronousRequest:loginrequest returningResponse:&loginResponse error:&loginRequestError];
NSString *loginResponseString = [[NSString alloc]initWithData:loginResponseData encoding:NSUTF8StringEncoding];
NSLog(@"%@",loginResponseString);

NSLog はこれを出力します: (いくつかの文字を置き換えて)

{"json": {"エラー": [], "データ": {"modhash": "j5hq16ukw2f17a9c153xxxxxxxxxa72ad989c96c904d49a97e", "クッキー": "13986184,2012-07-14T12:41:05,349f968b3089af75978xxxxxx9xxx}1 xxx7xxx7}ba

modhash と Cookie にアクセスするにはどうすればよいですか? 私は試した

[loginResponseData valueForKey:@"json"];

しかし、クラスはキーjsonのキー値コーディングに準拠していないと言っています

4

2 に答える 2

0

私の後でこれを見ている人は、H2CO3のソリューションを確認できますが、最も簡単なソリューションは、NSJSONSerializationを使用してサポートされている方法でそれを行うことであることがわかりました。

NSError *error;
NSData *jsonData = [loginResponseString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *loginResults = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error];
NSString *modhash = [[[loginResults valueForKey:@"json"] valueForKey:@"data"]valueForKey:@"modhash"];

私のために働いた。

于 2012-07-20T21:59:16.177 に答える
0

loginResponseString は NSString です -- 内部に JSON があるかどうかはわかりません。この JSON を NSDictionary に解析する必要があり、そのメソッドを使用して応答データを取得できます。私の JSON パーサーを試してください: http://github.com/H2CO3/CarbonateJSON

私の CarbonateJSON ライブラリを使用した例:

NSDictionary *parsedResponse = [loginResponseString parseJson];
NSString *modhash = [[[parsedResponse objectForKey:@"json"] objectForKey:@"data"] objectForKey:@"modhash"];
于 2012-07-14T20:03:43.290 に答える