-1

我想从一些 url 中获取一些数据并在 nslog 中打印结果。我正在传递 URl,并且只想在日志中获取结果。我用过这段代码:

   -(void)GETJSONDATA
{
   NSString*lu=@"tmp";
    NSString *requestString = [[NSString alloc]init];

    // [[NSUserDefaults standardUserDefaults] setValue:nil forKey:@"WRONGANSWER"];

    NSLog(@"request string:%@",requestString);
    NSData *requestData = [NSData dataWithBytes: [requestString UTF8String] length: [requestString length]];



    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: 
                                    [NSURL URLWithString: @"http://assessments.tlisc.org.au/webservices/questions/getbytaskpart.php?jsoncallback=?&token=1726204214321678|xTAieBBJoDaWmBsG1stxfq4zLO4&taskpartid=1"]];  
    NSString *postLength = [NSString stringWithFormat:@"%d", [requestData length]];

    [request setHTTPMethod: @"POST"];
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

    [request setHTTPBody:requestData];

    NSError *respError = nil;
    NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse: nil error: &respError ];
    if (respError) 
    {
        //        NSString *msg = [NSString stringWithFormat:@"Connection failed! Error - %@ %@",
        //                         [respError localizedDescription],
        //                         [[respError userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]]; 
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Test"                                                  message:@"check your network connection" delegate:self cancelButtonTitle:@"OK" 
                                                  otherButtonTitles:nil];
        [alertView show];


    } 
    else
    {
        NSString *responseString = [[NSString alloc] initWithData:returnData encoding: NSUTF8StringEncoding];
        NSLog(@"Resp : %@",responseString);

        NSDictionary *results = [responseString JSONValue];
        NSLog(@"results=%@",results);




}
}

它向我显示了这个错误:

 -JSONValue failed. Error trace is: (
    "Error Domain=org.brautaset.JSON.ErrorDomain Code=11 \"Unexpected end of string\" UserInfo=0x6a42be0 {NSLocalizedDescription=Unexpected end of string}"

有人可以指出我的错误吗?在响应字符串中,它显示空值。我不知道实际的错误。

它在浏览器中工作正常但是当我解析它时它显示这个错误......无论如何我可以通过它修改url并获得结果......我已经用不同的url检查了我的代码。它工作正常..

4

4 回答 4

0

我想我使用的库与您在这里使用的库相同,并且由于某种无法解释的原因,它在特定的 google api 上失败了,有时会得到结果,但通常会失败。代码似乎没有任何问题。

最后,我使用了内置的 NSJSONSerialization ( http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html ) 对象,从那以后它就没有失败过。我什至不知道内置了 JSON 支持(显然来自 iOS5)。

我运行了两个调用并并排处理它们,外部库不断失败。内部方法运行良好。

由于我是初学者并且文档(上面)并没有真正帮助我很多,我使用本教程http://www.raywenderlich.com/5492/working-with-json-in-ios-5来获取我的头在它周围

于 2012-11-26T13:19:34.893 回答
0

在浏览器中检查您的网址。查看结果。您的结果结构应该与 JSON 相同。如果在 json 的开头有任何其他额外的单词意味着。你应该检查你的 php 代码。

于 2012-11-26T14:23:37.687 回答
0

正如错误告诉您的那样:传入的 JSON 格式不正确。向您正在使用的 URL 发出一个简单的 GET 请求,我得到一个格式错误的 JSON,即它不是有效的 JSON。我猜将数据发布到此 URL 会返回与其中实际数据相同的格式(不是null)。

利用一个简单的JSON Validator,我得到了这个

第 5 行的解析错误:... "Description": "\n\tQuestion Numbe ------------------------^ Expecting 'STRING', 'NUMBER '、'NULL'、'TRUE'、'FALSE'、'{'、'['

于 2012-11-26T13:12:48.520 回答
0

您的字符串中有 HTML 标签。段落标记如

<p> and </p>

而且这些都没有正确逃脱。但是,我不知道小于号和大于号是否需要在 JSON 中转义,但显然他们正在制造问题。使用谷歌我找到了两者的陈述。<但是,一些网站建议使用\u003c>with 进行转义\u003e。这应该够了吧。

我试图验证来自 http://assessments.tlisc.org.au/webservices/questions/getbytaskpart.php?jsoncallback=?&token=1726204214321678|xTAieBBJoDaWmBsG1stxfq4zLO4&taskpartid=1<p>的输出</p>。鲍泽。(我正在查看“页面来源”)。但是,当转义字符串仍然有效并编码为相同的结果。

如果这不是您的问题,请提供您的输出

NSLog(@"Resp : %@",responseString);
于 2012-11-26T18:25:56.903 回答