2016-05-06 6 views
0

アクセストークンを取得しようとするとアンドロイドの改造に問題があり、全く動作しませんが、 "unauthorized 401" DHC byRESTlet問題なくアクセストークンを取得できます。retrofitを使用してアンドロイドのアクセストークンを取得することはできませんが、カールの中でしか動作しません

enter image description here

これは私が使用するインタフェースです:

public interface TokenService { 
    @Headers({ 
      "Content-Type : application/x-www-form-urlencoded", 
      "Authorization : Basic dGVzdDo=" 
    }) 
    @FormUrlEncoded 
    @POST("/oauth/token") 
    Call<TokenEntity> getAccessToken(@Field("username") String username, 
            @Field("password") String password , 
            @Field("grant_type") String grantType); 
} 

、これは、ログのエラーです:

D/OkHttp: --> POST http://192.168.1.5:8080/oauth/token http/1.1 
    D/OkHttp: Content-Type: application/x-www-form-urlencoded 
    D/OkHttp: Content-Length: 52 
    D/OkHttp: Content-Type : application/x-www-form-urlencoded 
    D/OkHttp: Authorization : Basic dGVzdDo= 
    D/OkHttp: username=abcd&password=aqwzsx123&grant_type=password 
    D/OkHttp: --> END POST (52-byte body) 
    D/OkHttp: <-- 401 Unauthorized http://192.168.1.5:8080/oauth/token (21ms) 
    D/OkHttp: Server: Apache-Coyote/1.1 
    D/OkHttp: X-Content-Type-Options: nosniff 
    D/OkHttp: X-XSS-Protection: 1; mode=block 
    D/OkHttp: Cache-Control: no-cache, no-store, max-age=0, must-revalidate 
    D/OkHttp: Pragma: no-cache 
    D/OkHttp: Expires: 0 
    D/OkHttp: X-Frame-Options: DENY 
    D/OkHttp: Cache-Control: no-store 
    D/OkHttp: Pragma: no-cache 
    D/OkHttp: WWW-Authenticate: Bearer realm="oauth", error="unauthorized", error_description="Full authentication is required to access this resource" 
    D/OkHttp: Content-Type: application/json;charset=UTF-8 
    D/OkHttp: Transfer-Encoding: chunked 
    D/OkHttp: Date: Fri, 06 May 2016 07:44:03 GMT 
    D/OkHttp: OkHttp-Sent-Millis: 1462520643079 
    D/OkHttp: OkHttp-Received-Millis: 1462520643087 
    D/OkHttp: {"error":"unauthorized","error_description":"Full authentication is required to access this resource"} 
{"error":"unauthorized","error_description":"Full authentication is required to access this resource"} 
<-- END HTTP (102-byte body) 
ponse{protocol=http/1.1, code=401, message=Unauthorized, url=http://192.168.1.5:8080/oauth/token} 

答えて

0

それは改造の問題のように見えるしていません。

あなたがクラスを作ってみてください、代わりにフィールドの@Bodyを使用してみてください可能性があります

class Request { 
    String username; 
    ... 
} 

、その後

Call<TokenEntity> getAccessToken(@Body Request request); 
+0

私の最初の試みだったが、私がすべき/ OAuthの/トークンを取得することのように思えます"formurlEncode"アノテーションがあり、それを使用するには@Fieldを使用する必要があります。それ以外の場合はエラーが発生します。とにかく奇妙なことにエラーが修正されました。ヘッダーアノテーションのスペースを削除しました。 –

関連する問題