2012-03-30 4 views
1

Dies ist sehr verwirrend, der folgende Code funktioniert plötzlich nicht. Der Versuch, meinen Android-Display, was eine Web-Seite zeigt bereits ziemlich gut zu machen:Ein JSONArray-Text muss mit '[' beginnen, mit dem Zeichen 1 von ... das ist perfekt, aber es beginnt mit '['

HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost; 
      httppost = new HttpPost(myUrl);    
      try 
      {     
       HttpResponse response = httpclient.execute(httppost); 
       StringBuilder strResponse = inputStreamToString(response.getEntity().getContent()); 
       JSONArray arrWishlists = new JSONArray(strResponse.toString()); 
       .... 
       the rest is not important 

Er stürzt bei der Erstellung des JSONArray mit der folgenden Meldung, die sehr viel Sinn machen würde, wenn mein Array nicht in der Tat war ein wirklich legal JSON-Array, das perfekt funktioniert, wenn in Javascript auf der gleichen Seite habe ich hier, um den Zugang von Android bin versucht:

03-30 02:55:21.304: W/System.err(346): org.json.JSONException: A JSONArray text must start with '[' at character 1 of [{"Index":"296","Name":"\u041c\u0410\u0428\u0418\u041d\u042b","Description":"","VisibleToFriends":"1","Items":[{"Name":"porche 911","Description":"","Image":"http:\/\/www.tuningnews.net\/wallpaper\/1024x768\/porsche-911-carrera-s-coupe-01.jpg","Index":"0","Link":"http:\/\/www.autotrader.com\/research\/car-models\/2012-Porsche-911\/21675-336697-Coupe\/2dr-Cpe-S-Turbo~model.jsp","ReservedBy":"1225198689"},{"Name":"Ferrari","Description":"F150","Image":"http:\/\/4.bp.blogspot.com\/-szn3PGyHsC4\/TVPtm1Eh2HI\/AAAAAAAADiI\/58R4x_IaE9g\/s1600\/ferrari_f150_1680_8.jpg","Index":1,"Link":"http:\/\/en.wikipedia.org\/wiki\/Ferrari_150\u00b0_Italia","ReservedBy":"1374872217"},{"Name":"Lamborgini","Description":"Diablo","Image":"http:\/\/users1.ml.mindenkilapja.hu\/users\/ozdsuli\/uploads\/lamborgini.jpg","Index":2,"Link":"","ReservedBy":"1225198689"}]},{"Index":"341","Name":"Birthday","Description":"My birthday wishes","VisibleToFriends":"1","Items":[{"Name":"iPad 3 ","Description":"Need for speed","Image":"http:\/\/www.techieday.com\/wp-content\/uploads\/2011\/05\/ipad-3-release-date.jpg","Index":"0","Link":"","ReservedBy":"1225198689"},{"Name":"iOS Development License","Description":"100$","Image":"http:\/\/www.geek.com\/wp-content\/uploads\/2010\/09\/apps_20100901.jpg","Index":1,"Link":"http:\/\/developer.apple.com\/programs\/ios\/","ReservedBy":""}]}] 

Antwort

0

ich bin nicht sicher, was Sie in inputStreamToString tun, sondern versuchen, dies zu tun

private String convertToString(InputStream istr){ 
    if(istr == null){ 
     return ""; 
    } 
    try { 
     return new java.util.Scanner(istr).useDelimiter("\\A").next(); 
    } catch (java.util.NoSuchElementException e) { 
     return ""; 
    } 
} 

Und in Ihrem Http Code

String strResponse = convertToString(response.getEntity().getContent()); 
JSONArray arrWishlists = new JSONArray(strResponse); 
+0

ich im Grunde den gleichen Mechanismus bin, einen Stream zu String umzuwandeln, aber mit Stringbuilder. Versuchte Ihre Methode nur für den Fall, aber nein, hat nicht funktioniert. Die Sache mit meinem Code ist, dass es perfekt funktionierte, bis ich den Hosting-Provider gewechselt habe. Meine Vermutung ist, dass der neue HTTP-Antwort in einer anderen Codierung sendet, die den JSON-Parser bricht ... – taralex

Verwandte Themen