2015-02-06 1 views
0

php.i를 사용하여 Facebook API에서 가져온 사용자 정보를 저장하려고합니다. JSON 객체를 반환하는 POST를 수행하기 위해 JSONParser 클래스를 사용했습니다. 다른 클래스의 AsyncTask에서 JSONParser 클래스의 makeHttpRequest 메서드를 사용하면 null 포인터 예외가 발생합니다. 전달한 인수가 null인지 여부는 확인했지만 응답이 없으므로 이해할 수 없습니다. 나는 SO에 물어 비슷한 질문의 답을 찾기 위해 노력하지만AsyncTask의 doInBackground() 메소드의 NullPointer 예외

이 JSONparser 클래스에 makeHTTPRequest 메소드를 호출하려고하는 클래스의 AsyncTask를하다 vain.Kindly 도움말 와요 고마워요에 갔다 :

,261

JSONObject json = jsonParser.makeHttpRequest(REGISTER_URL, "POST", params); 

이것은 JSONParser 클래스의 makeHttpRequest 방법입니다 :

public JSONObject makeHttpRequest(String url, String method, 
     List<NameValuePair> params) { 
    Log.d(TAG,"makeHttpRequest() is called"); 
    // Making HTTP request 
    try { 

     // check for request method 
     if(method == "POST"){ 
      // request method is POST 
      // defaultHttpClient 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      HttpPost httpPost = new HttpPost(url); 
      httpPost.setEntity(new UrlEncodedFormEntity(params)); 

      HttpResponse httpResponse = httpClient.execute(httpPost); 
      HttpEntity httpEntity = httpResponse.getEntity(); 
      is = httpEntity.getContent(); 

     }else if(method == "GET"){ 
      // request method is GET 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      String paramString = URLEncodedUtils.format(params, "utf-8"); 
      url += "?" + paramString; 
      HttpGet httpGet = new HttpGet(url); 

      HttpResponse httpResponse = httpClient.execute(httpGet); 
      HttpEntity httpEntity = httpResponse.getEntity(); 
      is = httpEntity.getContent(); 
     }   

    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    try { 
     BufferedReader reader = new BufferedReader(new InputStreamReader(
       is, "iso-8859-1"), 8); 
     StringBuilder sb = new StringBuilder(); 
     String line = null; 
     while ((line = reader.readLine()) != null) { 
      sb.append(line + "\n"); 
     } 
     is.close(); 
     json = sb.toString(); 
    } catch (Exception e) { 
     Log.e("Buffer Error", "Error converting result " + e.toString()); 
    } 

    // try parse the string to a JSON object 
    try { 
     jObj = new JSONObject(json); 
    } catch (JSONException e) { 
     Log.e("JSON Parser", "Error parsing data " + e.toString()); 
    } 

    // return JSON String 
    return jObj; 

} 

스택 추적 : 53,210

는 그리고 이것은 내가 nullpointer 예외 얻을 라인

02-06 19:28:13.720: D/request!(2247): starting 
02-06 19:28:13.720: D/request!(2247): java.lang.Exception 
02-06 19:28:13.720: D/request!(2247): at  com.example.letschatindia.FbProfileActivity$CreateUser.doInBackground(FbProfileActivity.java:448) 
02-06 19:28:13.720: D/request!(2247): at com.example.letschatindia.FbProfileActivity$CreateUser.doInBackground(FbProfileActivity.java:1) 
02-06 19:28:13.720: D/request!(2247): at android.os.AsyncTask$2.call(AsyncTask.java:288) 
02-06 19:28:13.720: D/request!(2247): at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
02-06 19:28:13.720: D/request!(2247): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
02-06 19:28:13.720: D/request!(2247): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
02-06 19:28:13.720: D/request!(2247): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
02-06 19:28:13.720: D/request!(2247): at java.lang.Thread.run(Thread.java:841) 
02-06 19:28:13.721: W/dalvikvm(2247): threadid=19: thread exiting with uncaught exception (group=0x4165fd40) 
02-06 19:28:13.723: E/AndroidRuntime(2247): FATAL EXCEPTION: AsyncTask #5 
02-06 19:28:13.723: E/AndroidRuntime(2247): Process: com.example.letschatindia, PID: 2247 
02-06 19:28:13.723: E/AndroidRuntime(2247): java.lang.RuntimeException: An error occured while executing doInBackground() 
02-06 19:28:13.723: E/AndroidRuntime(2247):  at android.os.AsyncTask$3.done(AsyncTask.java:300) 
02-06 19:28:13.723: E/AndroidRuntime(2247):  at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) 
02-06 19:28:13.723: E/AndroidRuntime(2247):  at java.util.concurrent.FutureTask.setException(FutureTask.java:222) 
02-06 19:28:13.723: E/AndroidRuntime(2247):  at java.util.concurrent.FutureTask.run(FutureTask.java:242) 
02-06 19:28:13.723: E/AndroidRuntime(2247):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
02-06 19:28:13.723: E/AndroidRuntime(2247):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
02-06 19:28:13.723: E/AndroidRuntime(2247):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
02-06 19:28:13.723: E/AndroidRuntime(2247):  at java.lang.Thread.run(Thread.java:841) 
02-06 19:28:13.723: E/AndroidRuntime(2247): Caused by: java.lang.NullPointerException 
02-06 19:28:13.723: E/AndroidRuntime(2247):  at com.example.letschatindia.FbProfileActivity$CreateUser.doInBackground(FbProfileActivity.java:449) 
02-06 19:28:13.723: E/AndroidRuntime(2247):  at com.example.letschatindia.FbProfileActivity$CreateUser.doInBackground(FbProfileActivity.java:1) 
02-06 19:28:13.723: E/AndroidRuntime(2247):  at android.os.AsyncTask$2.call(AsyncTask.java:288) 
02-06 19:28:13.723: E/AndroidRuntime(2247):  at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
+1

FbProfileActivity.java의 줄 번호는 '449'입니까? –

+0

나는 CreateUser 클래스, pls 체크 아래 라인을 게시했다. –

+0

jsonParser 객체는 어디에서 선언 했습니까? – Muthu

답변

1

jsonParser가 null이라고 생각합니다. 사용하기 전에 인스턴스화해야합니다.

0

당신의 jsonParser가 null입니다. 어디에서 인스턴스를 생성하는지 알 수 없으므로 객체가 생성되기 전에 코드를 사용하지 않도록 코드를 확인하십시오.

+0

에 도움을 기쁘게 해드립니다. 의견을 남기고 다른 제품을 선언했습니다. – Muthu

+0

알 겠어.하지만 초기화되지 않은 객체를 사용하는 것이 분명히 문제이며, 나머지 코드를 살펴 보지 않고는 도울 수 없습니다. –

+0

선언했지만 인스턴스를 만들지 못했습니다. 무투 (Muthu)는 코멘트에서 먼저 지적 했으므로 그의 대답을 받아 들였습니다. 감사합니다. –