Im работает в Json конверсии странная проблема, у меня есть japps на основе japps, реализующий аутентификацию oauth, и простое приложение для Android; Я основывал мою программирует логику на этот посту jhipster oauth : How can i get the access_token via CURLRetrofit 1.9, чтобы потреблять jhipster oauth ответ не заполнен
для андроид приложения у меня есть этот код:
public class RestAdapterManager {
public static final String API_BASE_URL = "http://192.168.0.102:8080/";
private static RestAdapter.Builder builder = new RestAdapter.Builder()
.setEndpoint(API_BASE_URL);
//.setClient(new OkClient(new OkHttpClient()));
public static <S> S createService(Class<S> serviceClass) {
return createService(serviceClass, null, null);
}
public static <S> S createService(Class<S> serviceClass, String username, String password) {
if (username != null && password != null) {
// concatenate username and password with colon for authentication
String credentials = username + ":" + password;
// create Base64 encodet string
final String basic =
"Basic " + Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);
builder.setRequestInterceptor(new RequestInterceptor() {
@Override
public void intercept(RequestFacade request) {
request.addHeader("Accept", "applicaton/json");
request.addHeader("Authorization", basic);
}
});
}
RestAdapter adapter = builder.setLogLevel(RestAdapter.LogLevel.FULL).build();
return adapter.create(serviceClass);
}
}
Интерфейс потреблять службы OAuth самого
public class AuthorizeService {
private static IAuthorizeService authorizeService;
public static IAuthorizeService getAuthorizeService() {
return RestAdapterManager.createService(IAuthorizeService.class, "RikuyWebapp", "mySecretOAuthSecret");
}
/**/
public interface IAuthorizeService {
@POST("/oauth/token")
public void authorize(@Body Object dummy, @Query("username") String userName,
@Query("password") String password,
@Query("grant_type") String grantType,
@Query("scope") String scope,
@Query("client_id") String client_id,
@Query("client_secret") String client_secret,
Callback<UserToken> callback);
}
}
и фактический вызов на услуги:
Button loginButton = (Button) findViewById(R.id.loginbutton);
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AuthorizeService.getAuthorizeService().authorize("", "username",
"password", "password", "read", "appId", "appSecret", new Callback<UserToken>() {
@Override
public void success(UserToken result, Response response) {
Log.d("sucees!", result.getAccessToken());
}
@Override
public void failure(RetrofitError error) {
Log.d("Fail!", error.getBody().toString());
}
});
}
});
Я пытаюсь поймать ответ, используя этот объект ген оцениваются с помощью http://www.jsonschema2pojo.org/ и ответ я получил от завитка
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"access_token",
"token_type",
"refresh_token",
"expires_in",
"scope"
})
public class UserToken {
@JsonProperty("access_token")
private String accessToken;
@JsonProperty("token_type")
private String tokenType;
@JsonProperty("refresh_token")
private String refreshToken;
@JsonProperty("expires_in")
private long expiresIn;
@JsonProperty("scope")
private String scope;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
/**
*
* @return
* The accessToken
*/
@JsonProperty("access_token")
public String getAccessToken() {
return accessToken;
}
..........
Из журнала модифицированной everithing seamns будет хорошо:
10-24 10:54:44.365 29537-29815/mobile.rikuy.com.co.androidoauthclient D/Retrofit﹕ ---> HTTP POST http://192.168.0.102:8080/oauth/token?username=username&password=password&grant_type=password&scope=read&client_id=webappId&client_secret=webAppSecret
10-24 10:54:44.365 29537-29815/mobile.rikuy.com.co.androidoauthclient D/Retrofit﹕ Authorization: Basic UmlrdXlXZWJhcHA6bXlTZWNyZXRPQXV0aFNlY3JldA==
10-24 10:54:44.365 29537-29815/mobile.rikuy.com.co.androidoauthclient D/Retrofit﹕ Content-Type: application/json; charset=UTF-8
10-24 10:54:44.365 29537-29815/mobile.rikuy.com.co.androidoauthclient D/Retrofit﹕ Content-Length: 2
10-24 10:54:44.368 29537-29815/mobile.rikuy.com.co.androidoauthclient D/Retrofit﹕ ""
10-24 10:54:44.368 29537-29815/mobile.rikuy.com.co.androidoauthclient D/Retrofit﹕ ---> END HTTP (2-byte body)
10-24 10:54:44.576 29537-29815/mobile.rikuy.com.co.androidoauthclient D/Retrofit﹕ <--- HTTP 200 http://192.168.0.102:8080/oauth/token?username=username&password=password&grant_type=password&scope=read&client_id=webappId&client_secret=webAppSecret (208ms)
10-24 10:54:44.576 29537-29815/mobile.rikuy.com.co.androidoauthclient D/Retrofit﹕ Server: Apache-Coyote/1.1
10-24 10:54:44.576 29537-29815/mobile.rikuy.com.co.androidoauthclient D/Retrofit﹕ X-Content-Type-Options: nosniff
10-24 10:54:44.576 29537-29815/mobile.rikuy.com.co.androidoauthclient D/Retrofit﹕ X-XSS-Protection: 1; mode=block
10-24 10:54:44.576 29537-29815/mobile.rikuy.com.co.androidoauthclient D/Retrofit﹕ Cache-Control: no-cache, no-store, max-age=0, must-revalidate
10-24 10:54:44.576 29537-29815/mobile.rikuy.com.co.androidoauthclient D/Retrofit﹕ Pragma: no-cache
10-24 10:54:44.576 29537-29815/mobile.rikuy.com.co.androidoauthclient D/Retrofit﹕ Expires: 0
10-24 10:54:44.576 29537-29815/mobile.rikuy.com.co.androidoauthclient D/Retrofit﹕ X-Frame-Options: DENY
10-24 10:54:44.576 29537-29815/mobile.rikuy.com.co.androidoauthclient D/Retrofit﹕ X-Application-Context: application:dev:8080
10-24 10:54:44.576 29537-29815/mobile.rikuy.com.co.androidoauthclient D/Retrofit﹕ Cache-Control: no-store
10-24 10:54:44.577 29537-29815/mobile.rikuy.com.co.androidoauthclient D/Retrofit﹕ Pragma: no-cache
10-24 10:54:44.577 29537-29815/mobile.rikuy.com.co.androidoauthclient D/Retrofit﹕ Content-Type: application/json;charset=UTF-8
10-24 10:54:44.577 29537-29815/mobile.rikuy.com.co.androidoauthclient D/Retrofit﹕ Transfer-Encoding: chunked
10-24 10:54:44.577 29537-29815/mobile.rikuy.com.co.androidoauthclient D/Retrofit﹕ Date: Sat, 24 Oct 2015 15:54:44 GMT
10-24 10:54:44.577 29537-29815/mobile.rikuy.com.co.androidoauthclient D/Retrofit﹕ OkHttp-Selected-Protocol: http/1.1
10-24 10:54:44.577 29537-29815/mobile.rikuy.com.co.androidoauthclient D/Retrofit﹕ OkHttp-Sent-Millis: 1445702084460
10-24 10:54:44.577 29537-29815/mobile.rikuy.com.co.androidoauthclient D/Retrofit﹕ OkHttp-Received-Millis: 1445702084573
10-24 10:54:44.578 29537-29815/mobile.rikuy.com.co.androidoauthclient D/Retrofit﹕ {"access_token":"26eb7fa0-16fc-4a78-8977-19d2d4125e74","token_type":"bearer","refresh_token":"f657059b-c85e-4021-8600-7f8990243a6f","expires_in":1759,"scope":"read"}
Но тогда, когда я пытаюсь достичь значения внутри POJO, большинство из них null, и заполняется только область.