2017-02-18 7 views
0

私はAndroid開発の新機能です。これは私のMainActivity.javaです。私はすでに寛大、まだ受信エラーにD/onFailure: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1 path $Retrift APIで不正な形式のJSON?

APIが返す設定:Error: FirstName is invalid.

private void saveUser() { 
    showpDialog(); 

    Gson gson = new GsonBuilder().setLenient().create(); 

    Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl("BASE_URL") 
      .addConverterFactory(GsonConverterFactory.create(gson)) 
      .build(); 

    APIService service = retrofit.create(APIService.class); 
    User user = new User(); 

    user.setFirstName(editName.getText().toString()); 

    Call<User> call = service.saveUser(user.getFirstName()); 

    call.enqueue(new Callback<User>() { 
     @Override 
     public void onResponse(Response<User> response) { 
      hidepDialog(); 
      Log.d("onResponse", "" + response.code() + 
        " response body " + response.body() + 
        " responseError " + response.errorBody() + " responseMessage " + 
        response.message()); 
     } 

     @Override 
     public void onFailure(Throwable t) { 
      hidepDialog(); 
      Log.d("onFailure", t.toString()); 
     } 
    }); 

} 

アイブ氏のようなそのSuccessまたは検証のいずれかを検索し、それらのすべては、私がtrueにsetLenientする必要があると言うが、私はすでにやったされてそれ。何か案が?

+0

JSONを共有しますか? –

+0

'response.body()'が成功していますか? あなたの成功に対する正確な回答は何ですか? '{成功}'? 私の意見はこれに依存する –

+0

私は私のAPIとしてPHPを使用しています。戻り値は 'Success'または' Validation'のエコーです。 – Joseph

答えて

1

SuccessまたはValidationは有効なJSONではありません。私はそれが不正な形の理由だと思う。 JSONは次のようなものです:

{ "status": "success" } 

したがって、JSONとして解析するのではなく、生の文字列として読み込んでください。または、サーバーからの応答を上記のような有効なJSONにする方が良いです。

レスポンスボディの代わりにHTTPレスポンスステータスからステータスを読み取ると、200 OKまたはその他のステータスコードのいずれかがRESTfulになります。しかし、それは疑問です。だから今はJSONを使用してください。

+0

あなたは正しいです、私はちょうど有効なJSONへの私の応答を編集する必要があります。ありがとう! – Joseph

関連する問題