2017-03-27 5 views
0

私が取得しようとポストデータレトロフィットを使用した。しかし、それは例外Fsaailurecom.google.gson.JsonSyntaxException例外います:java.lang.IllegalStateException:期待BEGIN_OBJECTをしかしラインでSTRINGました1列1つのパス私はStackOverflowのコミュニティによって提案されたすべての可能な解決策が、それでも問題を終了:( どれヘルプを試してみました..!期待BEGIN_OBJECTが、1行目でSTRINGだった - レトロフィット2

PS $ :brwoserとローカルホストでは、私が正しいJSONレスポンスを取得することができことができます。郵便配達員の場合このサイトはJavaScriptを使用しているため、ブラウザでJavascriptを有効にしてください。 JavaScriptを利用できる環境でブラウザを使用

のAPI CALL

private void getUsersFromDB() { 
     userservice= ApiUtils.getUserservice(); 
     userservice.getUsers().enqueue(new Callback<UserResponse>() { 
      @Override 
      public void onResponse(Call<UserResponse> call, Response<UserResponse> response) { 
       Log.d("RESULT", "onResponse: --------------------------------SUCCESS"); 
       List<Result> userresponses = response.body().getResult(); 
       Log.d("ANS", "Number of movies received: " + userresponses.size()); 

      } 

      @Override 
      public void onFailure(Call<UserResponse> call, Throwable t) { 
       Log.d("RESULT", "onResponse: --------------------------------Failure" +t); 

      } 
     }); 


    } 

UserModal.java

public class UserModel { 

    @SerializedName("id") 
    @Expose 
    private String id; 
    @SerializedName("user_name") 
    @Expose 
    private String userName; 
    @SerializedName("user_password") 
    @Expose 
    private String userPassword; 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getUserName() { 
     return userName; 
    } 

    public void setUserName(String userName) { 
     this.userName = userName; 
    } 

    public String getUserPassword() { 
     return userPassword; 
    } 

    public void setUserPassword(String userPassword) { 
     this.userPassword = userPassword; 
    } 

} 

UserResponse.java

public class UserResponse { 

    @SerializedName("result") 
    @Expose 
    private List<Result> result = null; 
    @SerializedName("error_code") 
    @Expose 
    private Integer errorCode; 

    public List<Result> getResult() { 
     return result; 
    } 

    public void setResult(List<Result> result) { 
     this.result = result; 
    } 

    public Integer getErrorCode() { 
     return errorCode; 
    } 

    public void setErrorCode(Integer errorCode) { 
     this.errorCode = errorCode; 
    } 
} 

インタフェース

public interface UserService { 
    @GET("/get_user.php") 
    Call<UserResponse> getUsers(); 

    @FormUrlEncoded 
    @POST("/insert_user.php") 
    Call<DBResponse> insertUsers(@Field("user_name") String username, 
           @Field("user_password") String userpassword); 
} 

これは

{"result":[{"Users":{"id":"1","user_name":"raj","user_password":"rajesh123"}},{"Users":{"id":"2","user_name":"raj","user_password":"rajesh123"}},{"Users":{"id":"3","user_name":"raj","user_password":"rajesh123"}},{"Users":{"id":"4","user_name":"raj","user_password":"rajesh123"}},{"Users":{"id":"5","user_name":"raj","user_password":"rajesh123"}},{"Users":{"id":"6","user_name":"raj","user_password":"rajesh123"}},{"Users":{"id":"7","user_name":"raj","user_password":"rajesh123"}},{"Users":{"id":"8","user_name":"raj","user_password":"rajesh123"}},{"Users":{"id":"9","user_name":"raj","user_password":"rajesh123"}},{"Users":{"id":"10","user_name":"raj","user_password":"rajesh123"}},{"Users":{"id":"11","user_name":"raj","user_password":"rajesh123"}},{"Users":{"id":"12","user_name":"raj","user_password":"rajesh123"}}]} 
+0

List の代わりにリストをUserResponseに試しましたか? – oskarko

+0

@oskarkoはい、しかし変更はありません –

答えて

0

が間違っているかもしれない私のJSONですが、あなたのJSONは、ユーザーのリストではなく、結果のリストを持っている1つの結果オブジェクトを返すように見えます?ですから、Listプロパティを持つ結果pojoを作成する必要があります。ユーザオブジェクトにはid、user_name、user_passwordという3つの文字列が必要です。そのエラーは、常にそうではないにしても、あなたのpojos/dataモデルの構造とJSONの構造の不一致を指しています。

1

サーバは、オブジェクトではなく文字列を返すだけです。 Fiddlerの回答を見てみるか、答えを見るために同じリクエストデータを使って郵便配達でリクエストを作成してみてください。

私が見ることができるように、resultには、を返すUserにエンコードされたオブジェクトのオブジェクトがあります。したがって、resultUserModal.javaの間に中間物オブジェクトを作成する必要があります。次のようなものがあります。

public IntermediarUser { 
    @SerializedName("User") 
    public UserModal user; 

    // getter, setter, etc 
} 

これを実行したくない場合は、クラウドのサーバー実装を確認してください。

+0

あなたは右の人のブラウザで私は正しいJSonの結果を得ることができますが、PostManの場合はエラーを返す**このサイトはJavaScriptが動作する必要があります。ブラウザでJavaScriptを有効にするか、ブラウザを使用してくださいJavascriptをサポートしています**何をする..? –

+0

こんにちは@Florescuここでは、ブラウザとPostmanでテストするリンクです[これを試してください](http://onesignaldemo.rf.gd/test/get_user。PHP) –

+0

問題がローカルホストで問題なく動くClouldに移動すると来る –

関連する問題