我正在实现登录功能,并为此使用Post请求,但是我收到错误提示
“ retrofit.RetrofitError: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
试试这个
public interface SafeUserApi { @FormUrlEncoded @POST("/api/userlogin") void getUserLogin( @Field("client_id") String id, @Field("client_secret") String secret, @Field("username") String uname, @Field("password") String password, Callback<LoginResult> cb ); }
这里的parm1是POST参数,您将把它传递给服务器。这将解决您的问题
如果您使用的是PHP,则可以使用以下命令访问param1 $uname= $_POST('username');
$uname= $_POST('username');
编辑1:
改造2.0版本:
public interface SafeUserApi { @FormUrlEncoded @POST("/api/userlogin") Call<ResponseBody> getUserLogin( @Field("client_id") String id, @Field("client_secret") String secret, @Field("username") String uname, @Field("password") String password ); }