我有一個傳遞Map參數或對象來改進POST請求的問題。如何通過Retrofit將Map <String,String>參數或對象傳遞給POST請求?
我遵循square,kdubb labs教程和this thread,我無法弄清楚。
我當前的代碼其中工程:
public interface FacebookUser {
@FormUrlEncoded
@POST("/user/login-facebook")
void login(
@Field("fb_access_token") String fbAccessToken,
@Field("os") String os,
@Field("device") String device,
@Field("os_version") String osVersion,
@Field("app_version") String appVersion,
@Field("online") String online,
Callback<FacebookLoginUserResponse> callback
);
}
和代碼:
RestAdapter restAdapter = new RestAdapter.Builder()
.setServer(requestMaker.getUrl())
.build();
FacebookUser facebookUser = restAdapter.create(FacebookUser.class);
facebookUser.login(getFbAccessToken(),
getString(R.string.config_os),
Info.getAndroidId(getBaseContext()),
Build.VERSION.RELEASE,
Info.getAppVersionName(getBaseContext()),
"" + 1,
new Callback<FacebookLoginUserResponse>() {
@Override
public void success(FacebookLoginUserResponse facebookLoginUserResponse, Response response) {
}
@Override
public void failure(RetrofitError retrofitError) {
}
});
當我嘗試使用這個界面我從服務器接收參數丟失:
public interface FacebookUser {
@POST("/user/login-facebook")
void login(
@Body Map<String, String> map,
Callback<FacebookLoginUserResponse> callback
);
}
和地圖:
HashMap<String, String> map = new HashMap<String, String>();
map.put("fb_access_token", getFbAccessToken());
map.put("os", "android");
map.put("device", Info.getAndroidId(getBaseContext()));
map.put("os_version", Build.VERSION.RELEASE);
map.put("app_version", Info.getAppVersionName(getBaseContext()));
map.put("online", "" + 1);
問題: 這是什麼錯誤? 如何傳遞對象來請求?
** RestAdapter restAdapter =新RestAdapter.Builder()對setEndpoint( 「http://192.168.101.55/test」)。 build(); **應該正常工作?它是(版本1.5.0)對不對? –
@LOG_TAG肯定。它應該工作。 –
爲什麼這不在改造文件? – jvrodrigues