2011-09-15 3 views
2

아래 코드가 잘못된 부분을 알려주십시오. 여러 번 시도했지만 오류가 계속 발생했습니다 : "응용 프로그램 demojson_google이 예기치 않게 중지되었습니다."그리고 모든 것을 표시하지 않습니다.Google지도 검색에서 json 파일을 읽을 때 문제가 발생했습니다.

package com.javacode.android.json.model; 
    import com.google.gson.annotations.SerializedName; 
    public class Result { 
    @SerializedName("GsearchResultClass") 
    public String GsearchResultClass; 

    @SerializedName("viewportmode") 
    public String viewportmode; 

    @SerializedName("listingType") 
    public String listingType; 

    @SerializedName("lat") 
    public String lat; 

    @SerializedName("lng") 
    public String lng; 

    @SerializedName("title") 
    public String title;   
} 

클래스 SearchResponse

package com.javacode.android.json.model; 
import java.util.List; 

public class SearchResponse { 
    public List<Result> results; 
} 

클래스 GoogleSearchActivity

package com.javacode.android.json; 

import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.Reader; 
import java.util.List; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.HttpStatus; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.DefaultHttpClient; 

import com.google.gson.Gson; 
import com.javacode.android.json.model.R; 
import com.javacode.android.json.model.Result; 
import com.javacode.android.json.model.SearchResponse; 

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.Toast; 

public class GoogleSearchActivity extends Activity { 
    /** Called when the activity is first created. */ 
    String url = "ajax.googleapis.com/ajax/services/search/local?v=1.0&q=train&sll=50.00001,-5.00001"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     InputStream source = retrieveStream(url); 

     Gson gson = new Gson(); 

     Reader reader = new InputStreamReader(source); 

     SearchResponse response = gson.fromJson(reader, SearchResponse.class); 

     List<Result> results = response.results; 

     for (Result result : results) { 
      Toast.makeText(this, result.title, Toast.LENGTH_SHORT).show(); 
     } 

    } 

    private InputStream retrieveStream(String url) { 

     DefaultHttpClient client = new DefaultHttpClient(); 

     HttpGet getRequest = new HttpGet(url); 

     try { 

      HttpResponse getResponse = client.execute(getRequest); 
      final int statusCode = getResponse.getStatusLine().getStatusCode(); 

      if (statusCode != HttpStatus.SC_OK) { 
       Log.w(getClass().getSimpleName(), 
        "Error " + statusCode + " for URL " + url); 
       return null; 
      } 

      HttpEntity getResponseEntity = getResponse.getEntity(); 
      return getResponseEntity.getContent(); 

     } 
     catch (IOException e) { 
      getRequest.abort(); 
      Log.w(getClass().getSimpleName(), "Error for URL " + url, e); 
     } 

     return null; 

    } 

} 

감사합니다

클래스 결과 : 여기 내 코드입니다!

답변

0

내 눈에는 널 (null)이 많습니다. 첫 번째 null은 retrieveStream에서 나온다. 이것을 시도하십시오 :

InputStream is = null; 

    DefaultHttpClient client = new DefaultHttpClient(); 

    HttpGet getRequest = new HttpGet(url); 

    try { 

     HttpResponse getResponse = client.execute(getRequest); 
     final int statusCode = getResponse.getStatusLine().getStatusCode(); 

     if (statusCode != HttpStatus.SC_OK) { 
      Log.w(getClass().getSimpleName(), 
       "Error " + statusCode + " for URL " + url); 

     } 
     else 
     { 
      HttpEntity getResponseEntity = getResponse.getEntity(); 
      is = getResponseEntity.getContent(); 
     } 

    } 
    catch (IOException e) { 
     getRequest.abort(); 
     Log.w(getClass().getSimpleName(), "Error for URL " + url, e); 
    } 

    return is; 

매니페스트에 사용 권한 인터넷이 있는지 확인하십시오.

모든 SearchResponse도 null입니다. 나는 gson을 사용하지 않았다. 좋은 노년기를 사용하지 않는 이유는 무엇입니까?

 HttpGet httpget = new HttpGet(url); 

    HttpResponse response; 

    response = httpclient.execute(httpget); 

    HttpEntity entity = response.getEntity(); 

    if (entity != null) { 

     InputStream instream = entity.getContent(); 
     gpResult = new GPResult(); 

     JSONObject json=new JSONObject(
       convertStreamToString(instream 
       )); 
     //the rest of JSON object processing 

건배.

관련 문제