onResponse 함수에서 개조 응답이 null을 반환합니다 (단일 JSON 객체).

SWAT 10101

사용자 등록 후 개조 API에서 응답을 받으려고합니다.

response.body()함수 에서 null을 얻습니다.

등록 URL : https://apitest10101.000webhostapp.com/alaa-apii/public/createuser(Method POST)

API는 다음과 같은 단일 객체 JSON을 반환합니다.

{
    "error": true,
    "message": "User Already Exists"
}

여기에 이미지 설명 입력"우체부에서 테스트 한 후 응답 작업"

RegisterActivity.java

public void register(View view) {

       if(Validate())
       {
           Log.d("####", "OKAAAAAY");

            first_name = first_name_edit.getText().toString().trim();
            last_name = last_name_edit.getText().toString().trim();
            email = email_edit.getText().toString().trim();
            password = password_edit.getText().toString().trim();
            phone = Integer.parseInt(phone_edit.getText().toString().trim());
            state = state_edit.getText().toString().trim();
            block = block_edit.getText().toString().trim();
            street = street_edit.getText().toString().trim();
            building = buidling_edit.getText().toString().trim();
            floor = floor_edit.getText().toString().trim();
            flat = flat_edit.getText().toString().trim();


          Call<ResultModel> call = RetrofitClient
                .getInstance()
                .getApi()
                .createUser(first_name, last_name, email, password, phone, postionOfReigon, state, block, street, building, floor, flat);

          call.enqueue(new Callback<ResultModel>() {
              @Override
              public void onResponse(Call<ResultModel> call, Response<ResultModel> response) {

                  boolean error = false;
                  String mass = null;
                  if (response.body() != null) { // response null  !!!!!!!!!!!
                      error = response.body().getError();
                      mass = response.body().getMessage();
                      Log.d("#####", error + "------" + mass);
                  }


                      Log.d("#####", error + "------" + mass);

              }

              @Override
              public void onFailure(Call<ResultModel> call, Throwable t) {
                  Toast.makeText(RegisterActivity.this, t.getMessage(), Toast.LENGTH_LONG).show();

              }
          });


       }
       else
       {
           Log.d("####", "NNNOOTT OKAAAAAY");
       }

    }

if 문을 제거하면 response.body()로그에이 오류가 있습니다.

2019-11-10 12:45:51.242 21211-21211/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.myapplication, PID: 21211
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Boolean com.example.myapplication.ResultModel.getError()' on a null object reference
        at com.example.myapplication.RegisterActivity$2.onResponse(RegisterActivity.java:161)
        at retrofit2.DefaultCallAdapterFactory$ExecutorCallbackCall$1$1.run(DefaultCallAdapterFactory.java:83)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6718)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

ResultModel.java

package com.example.myapplication;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class ResultModel {

    @SerializedName("error")
    @Expose
    private Boolean error;
    @SerializedName("message")
    @Expose
    private String message;

    public ResultModel(Boolean error, String message) {
        this.error = error;
        this.message = message;
    }

    public Boolean getError() {
        return error;
    }

    public void setError(Boolean error) {
        this.error = error;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

}

RetrofitClient.java

package com.example.myapplication;

import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class RetrofitClient {

    private  static final String BASE_URL = "https://apitest10101.000webhostapp.com/alaa-apii/public/";
    private static RetrofitClient mInstance;
    private Retrofit retrofit;

    private RetrofitClient(){
        retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
    }

    public static synchronized RetrofitClient getInstance()
    {
        if(mInstance == null)
        {
            mInstance = new RetrofitClient();
        }
        return mInstance;
    }

    public Api getApi()
    {
        return retrofit.create(Api.class);
    }



}

API 인터페이스

package com.example.myapplication;


import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

public interface Api {


    @FormUrlEncoded
    @POST("createuser")
    Call<ResultModel> createUser(
            @Field("firstname") String firstname,
            @Field("lastname") String lastname,
            @Field("email") String email,
            @Field("password") String password,
            @Field("phone") int phone,
            @Field("region") int region,
            @Field("state") String state,
            @Field("block") String block,
            @Field("street") String street,
            @Field("building") String building,
            @Field("floor") String floor,
            @Field("flat") String flat
    );
}

Gradle 빌드

implementation 'com.squareup.retrofit2:retrofit:2.6.2'
implementation 'com.squareup.retrofit2:converter-gson:2.6.2'

getError()false 또는 true getMessage()를 반환해야 하며 User already Exists 또는 User created successfully 메시지를 반환해야합니다 .

슬림 프레임 워크 v3.12를 사용하여 API를 빌드합니다.

** 모든 제안 **

프레드

422http 상태 가 된 것 같습니다 . 2XX상태 코드 가 아닌 모든 것은 개조에 의해 오류로 처리되며 이러한 경우를 사용하여 액세스합니다 response.errorBody().

그리 좋지 않은 소식은 수동으로 변환해야한다는 것입니다. 이를 수행하는 한 가지 방법은 response.errorBody().string().

처음 읽은 후에는 더 이상 읽을 수 없으므로 한 번만 호출하십시오. 그것은 행동과 같은 흐름입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Firebase 함수에서 "응답이 유효한 JSON 개체가 아닙니다."를 반환합니다.

분류에서Dev

개조 응답에서 JSON ARRAY 및 JSON 객체 응답을 얻는 방법은 무엇입니까?

분류에서Dev

개조-JSON 객체에서 응답을 얻는 방법

분류에서Dev

서버의 JSON 응답 일부가 null을 반환합니다. Android

분류에서Dev

매개 변수 수에 따라 함수에서 구조체 객체를 반환하고 일반 구조체의 객체에 할당합니다.

분류에서Dev

ABAP 웹 서비스의 응답은 여러 항목에 대한 배열을 반환하지만 단일 항목에 대한 객체를 반환합니다.

분류에서Dev

Android의 개조 응답에서 중첩 된 json 객체 및 배열을 얻는 방법은 무엇입니까?

분류에서Dev

이상한 JSON 응답을 간단한 객체의 배열로 변환

분류에서Dev

Axios의 응답 데이터는 Object 객체의 JSON을 변환합니다.

분류에서Dev

JSON 객체가 null 응답을 던지지 만 null이 아닙니다.

분류에서Dev

PHP json_encode는 동일한 객체에 대해 두 개의 다른 서버에서 다른 값을 반환합니다.

분류에서Dev

onResponse 개조에서 필드 답변을 검색하고 다시 사용합니다.

분류에서Dev

Micronaut는 Controller 메서드에서 객체 배열을 json 응답으로 변환합니다.

분류에서Dev

Firebase 함수에서 com.google.firebase.functions.FirebaseFunctionsException : 응답이 유효한 JSON 개체가 아닙니다.

분류에서Dev

Hive : json SerDe 파일이 외부 테이블에서 "NULL"을 반환합니다.

분류에서Dev

구성 파일에서 Json 개체 목록을 읽고 컨트롤러에 반환하면 항상 null이 반환됩니다.

분류에서Dev

JSON 응답을 배열 또는 일반 객체로 보내기

분류에서Dev

Retrofit2 onResponse 메서드가 Null 응답을 가질 수 있습니까?

분류에서Dev

조건이 일치하면 객체 배열이 객체를 반환합니다.

분류에서Dev

단일 배열에서 JSON 응답에서 오는 키를 사용하여 객체 배열로 변환 -JAVASCRIPT-

분류에서Dev

JSON 파일 직렬화는 자식 개체에 액세스 할 때 null 개체를 반환합니다.

분류에서Dev

개조-JSON 배열 수신은 항상 NULL을 반환합니다.

분류에서Dev

웹 양식에서 개체 속성이 null 대신 0을 반환합니다.

분류에서Dev

PHP 응답에서 하나의 문자열을 수신하는 동안 두 개의 동일한 문자열이 false를 반환합니다.

분류에서Dev

(Angular JS) 응답이 JSON 객체의 배열 인 경우 매개 변수를 전달하여 $ http.get을 어떻게 필터링합니까?

분류에서Dev

데이터베이스 호출시 컨트롤러의 응답이 JSON 개체를 반환하면 view.ejs에서 JSON 개체 값을 인쇄 할 수 없습니다.

분류에서Dev

웹 서비스의 매개 변수로 JSON obj 전달- "잘못된 요청"응답을 반환합니다.

분류에서Dev

데이터가 객체가 아닌 문자열 일 때 Android에서 동일한 json 응답을 구문 분석하는 방법은 무엇입니까?

분류에서Dev

Google Apps Script : API 응답에서 특정 개체를 선택하려고 할 때 "null"을 반환하지만 원래 응답에서 볼 수 있습니다.

Related 관련 기사

  1. 1

    Firebase 함수에서 "응답이 유효한 JSON 개체가 아닙니다."를 반환합니다.

  2. 2

    개조 응답에서 JSON ARRAY 및 JSON 객체 응답을 얻는 방법은 무엇입니까?

  3. 3

    개조-JSON 객체에서 응답을 얻는 방법

  4. 4

    서버의 JSON 응답 일부가 null을 반환합니다. Android

  5. 5

    매개 변수 수에 따라 함수에서 구조체 객체를 반환하고 일반 구조체의 객체에 할당합니다.

  6. 6

    ABAP 웹 서비스의 응답은 여러 항목에 대한 배열을 반환하지만 단일 항목에 대한 객체를 반환합니다.

  7. 7

    Android의 개조 응답에서 중첩 된 json 객체 및 배열을 얻는 방법은 무엇입니까?

  8. 8

    이상한 JSON 응답을 간단한 객체의 배열로 변환

  9. 9

    Axios의 응답 데이터는 Object 객체의 JSON을 변환합니다.

  10. 10

    JSON 객체가 null 응답을 던지지 만 null이 아닙니다.

  11. 11

    PHP json_encode는 동일한 객체에 대해 두 개의 다른 서버에서 다른 값을 반환합니다.

  12. 12

    onResponse 개조에서 필드 답변을 검색하고 다시 사용합니다.

  13. 13

    Micronaut는 Controller 메서드에서 객체 배열을 json 응답으로 변환합니다.

  14. 14

    Firebase 함수에서 com.google.firebase.functions.FirebaseFunctionsException : 응답이 유효한 JSON 개체가 아닙니다.

  15. 15

    Hive : json SerDe 파일이 외부 테이블에서 "NULL"을 반환합니다.

  16. 16

    구성 파일에서 Json 개체 목록을 읽고 컨트롤러에 반환하면 항상 null이 반환됩니다.

  17. 17

    JSON 응답을 배열 또는 일반 객체로 보내기

  18. 18

    Retrofit2 onResponse 메서드가 Null 응답을 가질 수 있습니까?

  19. 19

    조건이 일치하면 객체 배열이 객체를 반환합니다.

  20. 20

    단일 배열에서 JSON 응답에서 오는 키를 사용하여 객체 배열로 변환 -JAVASCRIPT-

  21. 21

    JSON 파일 직렬화는 자식 개체에 액세스 할 때 null 개체를 반환합니다.

  22. 22

    개조-JSON 배열 수신은 항상 NULL을 반환합니다.

  23. 23

    웹 양식에서 개체 속성이 null 대신 0을 반환합니다.

  24. 24

    PHP 응답에서 하나의 문자열을 수신하는 동안 두 개의 동일한 문자열이 false를 반환합니다.

  25. 25

    (Angular JS) 응답이 JSON 객체의 배열 인 경우 매개 변수를 전달하여 $ http.get을 어떻게 필터링합니까?

  26. 26

    데이터베이스 호출시 컨트롤러의 응답이 JSON 개체를 반환하면 view.ejs에서 JSON 개체 값을 인쇄 할 수 없습니다.

  27. 27

    웹 서비스의 매개 변수로 JSON obj 전달- "잘못된 요청"응답을 반환합니다.

  28. 28

    데이터가 객체가 아닌 문자열 일 때 Android에서 동일한 json 응답을 구문 분석하는 방법은 무엇입니까?

  29. 29

    Google Apps Script : API 응답에서 특정 개체를 선택하려고 할 때 "null"을 반환하지만 원래 응답에서 볼 수 있습니다.

뜨겁다태그

보관