2015-10-05 12 views
5

Androidのアプリケーションでokhttp Retrofitを使用してネットワークリクエストを行っています。

com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:私はこのエラーを取得する要求の一つの期待BEGIN_OBJECTが、行1列1つのパス$

私は201応答を参照してくださいにSTRINGましたログはRetrofitがこのエラーをスローします。以下は私のコードです。

signup(signupParams, new Callback<Member>() { 
      @Override 
      public void success(Member member, Response response) { 
       if (member != null) { 
        UserAccount userAccount = new UserAccount(member); 
        userAccount.save(); 
      } 

      @Override 
      public void failure(RetrofitError re) { 
       BusProvider.post(new SignupFailedEvent(re, email)); 
      } 
     }); 

signupParams値がある -

{"emailAddress":"[email protected]","password":"tester123","userSource":"APH"} 

私はjsonLintで、このJSONをテストして、それが有効なJSONです。これはメンバークラスで、理想的なレスポンスでなければなりません。あなたがメンバークラスに掲載のソースコードが正確であれば、あなたはあなたを考えるレスポンスJSONを取得されていません

{ 
    "emailAddress": "[email protected]", 
    "id": 1437811, 
    "token": "sdhshdghsdhhsdbcjhbsjdhc", 
    "firstName": "John", 
    "lastName": "Smith" 
} 
+1

レスポンスのJSON例がありますか?これは、サービスからの応答をデシリアライズする際の問題のように見えます。 –

+0

@AndrewBreen私は応答の例を追加しました。 – user3773337

+2

あなたはそれはあなたが取得している応答であることを確認することができます - あなたのレトロフィットのセットアップコードでlogging.Verboseをオンにし、要求と応答が直接どのように見えるかを参照してください。 –

答えて

1

:応答の

public class Member { 
    public String emailAddress; 
    public String token; 
    public long id; 
    public String firstName; 
    public String lastName; 
} 

例は次のようなものでなければなりませんあります。

エラーメッセージは、JSONパーサーが複雑なオブジェクトを予期していたStringを見つけたことを意味します。

メンバークラスに複雑なオブジェクトがないため、おそらく有効なJSONではないでしょう(開始の中括弧で始まらない)。

コメントのいずれかに示唆されているように、Retrofitの詳細なログを有効にするか、「Postman」のようなツールを使用してAPIに同じデータを投稿し、実際の結果を確認してください。

+1

私は冗長ロギングをオンにし、私は私の応答は、このような何かエンコードされていることを参照してください。N0ߥWDPを、&J @QT \ "#7GDS]!ivRRݣ4SͷTpĝP> VP(銀/% =/T \ T6O&Y $ - z5Lm56、:K * M] JM +TƐP᮰pŔ4\ O9&* C:?〜G + V '〜<=このような応答がある理由L、6S5SifF {Oa3Ǯは、」誰もが知っています。他のすべてのAPIコールでは、私は有効なJSONを見ますlogcatの応答 – user3773337

+0

Yep!that's problem。 "理由"を知っている唯一の人は、APIの所有者です。 – GreyBeardedGeek

+0

上記の答えとしてPostmanのようなツールを使って検証できますか?それはtを受け取る彼のデータは期待どおりですか?このデータはおそらくファイルをダウンロードしようとしているようです。 –

関連する問題