私はアンドロイドアプリを使用して改装2を使用しています。私のREST APIはすべてLiferayで書かれています。今Liferayでは、私が最初に認証する必要のあるWebサービスにアクセスすることがわかりました。だから私はこのレトロフィットが動作していないことを使用してアンドロイドからレストウェブサービス経由でログイン
http://test:[email protected]:8080/liferay-portlet/api/secure/jsonws/
のように認証したLiferayのは、私たちがoverridden.IはポストマンからのWebサービスの呼び出しにその作業罰金をチェックして独自のユーザー認証方法があります。
URL:http://test:[email protected]:8080/liferay-portlet/api/secure/jsonws/customuserauthentication/authenticate-by-user-name
形式でエンコードされた値
companyId:10154
screenName:xyz
password:xyz
active:true
私は郵便配達にこれを置く場合、それは適切にJSONレスポンスをフェッチします。
私がアンドロイドコードから同じものを呼び出すと、私は応答が "無許可"になります。
私のレトロフィットサービス
public interface LoginApi {
@FormUrlEncoded
@POST("/liferay-portlet/api/secure/jsonws/customuserauthentication/authenticate-by-user-name")
Call<User> login(@Field("companyId")long companyId,@Field("screenName")String screenName,@Field("password")String password,@Field("active")boolean active);
}
マイRestApiManagerクラス(このクラスは、サービス・インターフェースを呼び出し、改造ビルダーを作成するために使用される)
public class RestApiManager {
private LoginApi loginApi;
public LoginApi login() {
if (loginApi==null) {
GsonBuilder gson=new GsonBuilder();
gson.registerTypeAdapter(String.class, new StringDeserializer());
Retrofit retrofit=new Retrofit.Builder()
.baseUrl("http://test:[email protected]:8080")
.addConverterFactory(GsonConverterFactory.create())
.build();
loginApi=retrofit.create(LoginApi.class);
}
return loginApi;
}
RestApiManager
Call<User> callUser=restApiManager.login().login(loginData.getCompanyId(),loginData.getScreenName(),loginData.getPassword(),loginData.isActive());
callUser.enqueue(new Callback<User>() {
@Override
public void onResponse(Response<User> response, Retrofit retrofit) {
Log.d("Login","Login Response:"+response.body());
}
@Override
public void onFailure(Throwable t) {
Log.d("Login","Login Response:"+t.getMessage());
}
});
への呼び出し
どのような応答ですか?どのコールバックが呼び出されますか? – Blackbelt
あなたはLogginを置くべきです –