【发布时间】:2015-02-10 07:21:56
【问题描述】:
我正在实现登录功能并为此使用 Post 请求,但我收到错误提示
“改造。改造错误: com.squareup.okhttp.internal.http.HttpMethod.METHODS"
下面是我的代码
import java.util.HashMap;
import java.util.Map;
import retrofit.Callback;
import retrofit.http.*;
//Myapi.java
import java.util.HashMap;
import java.util.Map;
import retrofit.Callback;
import retrofit.http.*;
public interface MyApi {
/* LOGIN */
@POST("/api/0.01/oauth2/access_token/")
// your login function in your api
public void login(@Body HashMap<String, String> arguments, Callback<String> calback);
}
//In my activity
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(Constants_Interface.URL).setClient(newclient)
.build();
MyApi mylogin = restAdapter.create(MyApi.class);
HashMap<String, String> dicMap = new HashMap<String, String>();
dicMap.put("client_id", XXX);
dicMap.put("client_secret", XXX);
dicMap.put("username", XXX);
dicMap.put("password", XXX);
mylogin.login(dicMap, new Callback<String>() {
@Override
public void failure(RetrofitError retrofitError) {
retrofitError.printStackTrace(); // to see if you have
// errors
}
@Override
public void success(String s, retrofit.client.Response response) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "Login Succes",
Toast.LENGTH_LONG).show();
}
});
下面是 logcat 输出。
02-10 13:02:43.846: W/System.err(30684): retrofit.RetrofitError: com.squareup.okhttp.internal.http.HttpMethod.METHODS 02-10
【问题讨论】:
-
如果您的服务器期待 Json,请尝试将 @Body 参数设为一个类。
-
不,它不期望 json 对象。它仅将参数作为字符串询问。
-
Retrofit 默认序列化你的@Body 类,所以我确定你的服务器会得到一个字符串
-
我已经更新了 logcat 的输出,你可以看看吗?
-
用服务器期望的字段创建一个 LoginResponse 类并使用 Callback
而不是 Callback 非常容易,Retrofit 正在尝试反序列化。
标签: java android rest retrofit retrofit2