【发布时间】:2017-06-09 08:40:59
【问题描述】:
我不明白其中的区别,我编写了一个示例,其中我的应用程序使用 retrofit2 使用 POST 请求将用户名和密码发送到服务器。
我首先尝试在接口方法中发送带有@Body标签的请求:`
@POST("/testproject/login.php")
Call<TestResponse> sendUsernamePassword(@Body UserData userData);
但是我的 login.php 响应没有收到任何正文标签(用户名、密码)。
然后我更改使用 FormEncoding 发送请求的方法:
@FormUrlEncoded
@POST("/testproject/login.php")
Call<TestResponse> sendUsernamePassword(@Field("username")String username,
@Field("password")String password);
它开始工作了,但我不明白为什么改造无法使用@Body 注释发送发布请求。
这是login.php文件
<?php
if (isset($_POST['username']) && isset($_POST['password'])) {
$response['status'] = 'success';
$response['username'] = $_POST['username'] . " received";
$response['password'] = $_POST['password'] . "received";
echo json_encode($response);
} else {
$response['status'] = 'failure';
echo json_encode($response);
}
?>
有人能解释一下有什么区别以及如何解决吗?
【问题讨论】:
标签: java php android json retrofit2