2016-08-29 2 views
0

これはちょうどresponse.body()が最初に見るためにログインしてみてください、私は改造応答を文字列に変換する際にNullPointerExceptionが発生しましたか?

java.lang.NullPointerException 
at com.vfirst.ifbagro.login.LoginFragment$1.onResponse(LoginFragment.java:96) 
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68) 
at android.os.Handler.handleCallback(Handler.java:730) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:5214) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:525) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555) 
at dalvik.system.NativeStart.main(Native Method) 
+0

をお試しください'JSONObject'の代わりにモデルクラス –

答えて

1

NULLポインタを取得した文字列に対する応答を変換しながらこれは改造要求

JSONObject loginParams = ((MainActivity) getActivity()).requestParams.getLoginParams(etUserName.getText().toString(), etPassword.getText().toString()); 
      ApiClient.RegisterAPI apiService = 
        ApiClient.getClient().create(ApiClient.RegisterAPI.class); 


      Call<JSONObject> call = apiService.getLogin(loginParams); 
      call.enqueue(new Callback<JSONObject>() { 
       @Override 
       public void onResponse(Call<JSONObject> call, Response<JSONObject> response) { 
        Log.e("response", response.body().toString()); 
       } 

       @Override 
       public void onFailure(Call<JSONObject> call, Throwable t) { 

       } 
      }); 

ある

public class ApiClient { 
public static final String BASE_URL = AppConstants.BASE_URL; 
private static Retrofit retrofit = null; 


public static Retrofit getClient() { 
    if (retrofit == null) { 
     retrofit = new Retrofit.Builder() 
       .baseUrl(BASE_URL) 
       .addConverterFactory(GsonConverterFactory.create()) 
       .build(); 
    } 
    return retrofit; 
} 

public interface RegisterAPI { 
    @POST(AppConstants.LOGIN_PAGE) 
    Call<JSONObject> getLogin(@Body JSONObject loginParams); 
} 
} 

私の改造クラスでありますnullでない場合あなたがOkHttpClientを使用している場合

あなたはインターセプタを追加し、応答を記録することができ、これは、動作が保証されています

public Response intercept(Chain chain) throws IOException { 
    Request.Builder builder = chain.request().newBuilder(); 
    // Add custom headers etc with builder 
    .... 
    Request request = builder.build(); 
    Response response = chain.proceed(request); 
    String body = response.body().string() 
    .... 
+0

string()メソッドはありません – WISHY

0

が ``あなたがレスポンスシリアル化を使用する必要が を呼び出すには、この

BufferedReader reader = null; 
String output = ""; 

    try { 
     reader = new BufferedReader(new InputStreamReader(response.getBody().in())); 
     output = reader.readLine(); 
    } catch (IOException e) { 
      e.printStackTrace(); 
    } 
    Toast.makeText(getActivity(), output, Toast.LENGTH_LONG).show(); 
関連する問題