2012-01-26 2 views
0

, когда я пытаюсь разобрать ответ JSON, я получил пустой ответ и эту ошибку:Мое приложение не разбирая ответ JSON

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

Это, как я пытаюсь отправить запрос JSON и как я пытался разобрать его ответ:

отправить запрос JSON:

- (void)viewWillAppear:(BOOL)animated{ 
    //Specify the adress of the webservice (url) 
    NSURL *url = [NSURL URLWithString:@"http://xxxxxxxxxxx.com/webservices/"]; 
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 
    NSString *jsonStringArray=[aMutableArray JSONRepresentation]; 

    NSLog(@"-------------"); 
    NSLog(@"%@",jsonStringArray); 
    NSLog(@"-------------"); 
    [request setPostValue:jsonStringArray forKey:@"liste_des_themes"]; 
    NSLog(@"The response string is: %@",request.responseString); 
    [request setDelegate:self]; 
    [request startAsynchronous]; 
} 

для NSLog где я пытался отобразить строку JSON перед отправкой я получил правильный формат JSON:

NSLog(@"%@",jsonStringArray);//["Mairie","Préfectures et sous-préfectures"] 

Теперь второй NSLog, я получил нулевой:

NSLog(@"The response string is: %@",request.responseString);//The response string is: (null) 

При анализе ответа:

-(void)requestFinished:(ASIHTTPRequest *)request 
    { 
     if(request.responseStatusCode==200) 
     { 
     NSLog(@"This block gets called, response code is 200");//This block gets called, response code is 200 
     //parse the response 
      NSLog(@"The response string is: %@",request.responseString); 

      NSString *responseString=[request responseString]; 
      NSDictionary *responseDict=[responseString JSONValue]; 
    } 
} 

для NSLog пытается отобразить строку ответа, я не получил ничего, ни нулевого, ни правильного значения:

  NSLog(@"The response string is: %@",request.responseString); 
    //The response string is: 

И после этого, я получил эту ошибку трассировки:

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

Можете ли вы помочь мне там? чем раньше.

+1

Для меня это выглядит как проблема на стороне сервера – vikingosegundo

ответ

2

Я бы предположил, что у вас нет контроля над веб-службой, поэтому вам следует что-то сделать, это, как правило, не стартер.

1) Во-первых, убедитесь, что ответ JSON выглядит правильно. Можете ли вы загрузить его в браузере и посмотреть, что все в порядке?

2) Если это выглядит хорошо, может ли он пройти тест на литиевый JSON? (Попробуйте jsonlint.com и подключите его там.)

3) Если он проходит (1) и (2), то посмотрите, есть ли у него какие-либо ведущие нули в ответе возвращенных данных. Я нашел это в моем собственном коде. Я не мог напрямую работать с этим без предварительного удаления ведущих нулей.

К сожалению, я не на своем mac, чтобы скопировать код, который я использую, чтобы решить эту проблему. Но это была настоящая проблема, и решение заключается в удалении нулей (в моем случае их было тысячи). Нули в укусе выглядят как ограничитель строк, поэтому ведущие нули скрывают реальный контент.

+0

Здравствуйте, Джим, у меня все есть контроль над сайтом webservice, это мой, ответ JSON в порядке, я уже тестировал его на 'jsonlint.com', это еще шаг 3 в вашем ответе, я не понимаю точно, что вы подразумеваете под ведущими нулями ?, вот мой ответ: '{" themes ": [[« Direction des Routes Secteur de Pithiviers »,« mairies », «Morailles 45300 PITHIVIERS LE VIEIL», «0238345744», «48.823042», «2.365907»], [«Cr \ u00e9dit Mutuel Du Centre», «Банки», «Agence de Pithiviers 33 r Am Gourdon 45300 PITHIVIERS», «0820834080», , "48.703042", "2.145907"]]} ' – Malloc

+0

По какой-то причине сервер I использовал предварительные начальные байты со значением 0x00. Их было много. Я не контролировал, что было отправлено. Он выглядел идеально в браузере, поэтому я предполагаю, что браузер отключил эти значения.Но когда я изучил необработанные данные, полученные моей программой, нули были очевидны и интерпретировались как нулевые терминаторы строки. Изучите необработанные данные, полученные вашим URL-адресом внутри вашего кода. – Jim

+0

Итак, нули в строке ответа могут вызвать проблему? – Malloc

1

У вас возникла проблема с веб-службой, которая обслуживает JSON. Отлаживайте это, и вы найдете эту проблему.

Смежные вопросы