【发布时间】:2018-07-31 04:58:43
【问题描述】:
使用 Retrofit2 将数据发布到服务器后如何获取响应正文?
这是我的界面:
public interface UserClient {
@FormUrlEncoded
@POST(Constants.REGISTRATION_URL)
Call<UserData> createAccount(
@FieldMap Map<String, Object> map
);
}
这是我在 MainActivity 类中的方法:
private void createUserForm(String username, String password, String email, String deviceID, String gender, String avatarPath, int online){
UserClient userClient = retrofit.create(UserClient.class);
Map<String, Object> map = new HashMap<>();
map.put("username", username);
map.put("password", password);
Call<UserData> call = userClient.createAccount(map);
call.enqueue(new Callback<UserData>() {
@Override
public void onResponse(Call<UserData> call, Response<UserData> response) {
// Need to get data from server after user has been inserted in database
}
@Override
public void onFailure(Call<UserData> call, Throwable t) {
}
});
}
这是我的 PHP 类
<?php
include '../db/db.php';
$username = $_POST['username'];
$password = $_POST['password'];
if(mysqli_query($conn, "INSERT INTO users VALUES(NULL, '$username', '$password', '$email', '$device_id', '$gender', '$avatar_path', '$online')")){
$loginQuery = mysqli_query($conn, "SELECT * FROM users WHERE username = '".$username."' AND device_id = '".$device_id."' LIMIT 1 ");
$row = mysqli_fetch_row($loginQuery);
$userData['user_info'] = array(array(
'id' => $row[0],
'username' => $row[1],
'password' => $row[2]
));
print(json_encode($userData));
}else{
print(json_encode(null));
}
?>
流程:
- 正在向 Mysql 数据库插入数据。 (作品)
- 正文中的响应也成功(作品)
- 从 php 发送编码数据(无效)
- 试图从
onResponse中的 php 获取编码数据(无效)
【问题讨论】:
标签: php android retrofit retrofit2