我的代码:
界面:
@POST("login")
@FormUrlEncoded
Call<User> UserLogin(@Field("username") String username,@Field("password") String password);
login_activity:
Call<User> call = apiInterface.UserLogin(username,password);
rest api php:
$inputJSON = file_get_contents('php://input');
$content = json_decode( $inputJSON, TRUE );
username =$content['username'];
password =$content['password'];
但是它不起作用。 有什么问题吗?
result : null
答案 0 :(得分:0)
正如@Morteza Jalambadani在您的帖子的comment中指出的那样,您正在发送FormUrlEncoded数据而不是JSON。因此,您需要像下面这样在服务器脚本中接收数据,
if (isset($_POST)) {
username = $_POST['username'];
password = $_POST['password'];
// do whatever you want with the data received from client
}
如果您确实要从客户端向服务器发送JSON数据,则需要进行以下更改。
创建一个模型类(我将在此处创建Login
类进行演示)
public class Login {
private String username;
private String password;
public Login(String username, String password) {
this.username = username;
this.password = password;
}
// getter and setter methods if you want
}
在API接口类中,删除@FormUrlEncoded
批注并更改UserLogin()
方法参数。
@POST("login")
Call<User> UserLogin(@Body Login data); // @Body annotation from retrofit2.http.Body package
现在在您的Activity类中进行以下更改。
String username = "user_name_entered_by_user";
String password = "password_entered_by_user";
Login data = new Login(username, password);
// pass data parameter to UserLogin() method
Call<User> call = apiInterface.UserLogin(data);
服务器脚本与您在问题中发布的脚本相同。
$inputJSON = file_get_contents('php://input');
$content = json_decode( $inputJSON, TRUE );
username =$content['username'];
password =$content['password'];