作者:永远的爱ye | 来源:互联网 | 2023-02-01 17:33
我不明白其中的区别,我编写了一个示例,其中我的应用程序使用带有Retrofit2的POST请求将用户名和密码发送到服务器。
我首先尝试在接口方法中使用@Body标签发送请求:
@POST("/testproject/login.php")
Call sendUsernamePassword(@Body UserData userData);
但是我的login.php响应没有收到任何正文标签(用户名,密码)。
然后,我更改使用FormEncoding发送请求的方法:
@FormUrlEncoded
@POST("/testproject/login.php")
Call sendUsernamePassword(@Field("username")String username,
@Field("password")String password);
它开始起作用,但是我不明白为什么改造无法使用@Body注释发送帖子请求。
这是login.php
文件
有人可以解释有什么区别,如何解决?
1> 小智..:
@Body
–将Java对象作为请求正文发送。
@Field
–按照表单编码发送数据。@Field参数仅适用于POST。
为了读取php中的POST json正文,您可以使用以下代码:
//Get the request body
$inputJSON = file_get_contents('php://input');
//Convert into array
$input = json_decode($inputJSON, TRUE);
$username = $input['username'];
$password = $input['password'];