Java 在android studio中使用改型库时,出现错误400的原因是什么?

Java 在android studio中使用改型库时,出现错误400的原因是什么?,java,android,retrofit2,postman,http-status-code-400,Java,Android,Retrofit2,Postman,Http Status Code 400,在下面的代码中,我试图从用户RegisterFragment中获取3个字符串(用户名、密码和电子邮件),并通过android studio中的Reformation库将其传递给服务器。但是我得到了错误400。我知道它应该可以工作,因为这是我们的一个家庭作业,其他人都成功地完成了,但我不知道我的代码哪部分是错的 我试着调试程序,并在RegisterController.java中onFailure函数中显示: onFailure():=java.lang.illegalArgumentExcept

在下面的代码中,我试图从用户
RegisterFragment
中获取3个字符串(用户名、密码和电子邮件),并通过android studio中的
Reformation
库将其传递给服务器。但是我得到了
错误400
。我知道它应该可以工作,因为这是我们的一个家庭作业,其他人都成功地完成了,但我不知道我的代码哪部分是错的

我试着调试程序,并在
RegisterController.java中
onFailure
函数中显示:

onFailure():=java.lang.illegalArgumentException:参数计数无效。应为2,收到0

MainActivity.java:

package com.m.chatroom;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import com.m.chatroom.Data.ChatRoomAPI;
import com.m.chatroom.Data.RegisterserController;
import com.m.chatroom.Models.User;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        RegisterFragment registerFragment = new RegisterFragment();
        getFragmentManager().beginTransaction().add(R.id.container_main , registerFragment)
                .addToBackStack(null).commit();


    }

}
聊天室API:

package com.m.chatroom.Data;


import com.m.chatroom.Models.User;

import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Headers;
import retrofit2.http.POST;

public interface ChatRoomAPI {

    public static final String auth= "5a1d*******fabd";
    String BASE_URL = "https://api.backtory.com/";

    @Headers("X-Backtory-Authentication-Id:5a1d4b******fabd")
    @POST("auth/users")
    Call<User> registerUser(@Body User user);

    interface RegisterUserCallback
    {
        void onResponse(User user);
        void onFailure(String cause);
    }
}
User.java:

package com.m.chatroom.Models;



public class User {

    private String userName;
    private String password;
    private String email;
    private String phoneNumber;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String serName) {
        this.userName = serName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    public User() {


    }
}
编辑:在邮递员软件中,我可以发送以下查询:

{
    "username":"xyzxyzxyz",
    "password":"xyzxyzxyz",
    "email":"xyzxyzxyz@gmail.com"
}
并得到这个结果(代码201):


也许这很愚蠢,但我更改了这行代码
私有字符串用户名;
私有字符串用户名;
User.java
中,它工作了

正如你在这里看到的

{
    "username":"xyzxyzxyz",
    "password":"xyzxyzxyz",
    "email":"xyzxyzxyz@gmail.com"
}

API获取的是
用户名
而不是
用户名

错误400是http错误代码(400错误请求),因此您的查询缺少某些内容。请参阅,因为它看起来很相似。听起来您正在使用的聊天室API希望url绑定到的函数有两个参数。无论是url参数还是查询参数,您都必须根据API来确定。首先,请澄清您需要的JSON请求(参数预期)是什么,例如JSON输入数据{“userName”:“test”}JSON响应{“success”:true}。查找API并传递所需的参数it@seon当前位置我编辑了我的问题。
{
    "username":"xyzxyzxyz",
    "password":"xyzxyzxyz",
    "email":"xyzxyzxyz@gmail.com"
}
{
    "firstName": null,
    "lastName": null,
    "instanceId": "5a1d*****16474fabd",
    "phoneNumber": null,
    "active": "true",
    "guest": "false",
    "avatar": null,
    "creationDate": "2018-02-09T06:35:04.561Z",
    "userId": "5a7d4118e4b02316b5e5fe09",
    "email": "xyzxyzxyz@gmail.com",
    "username": "xyzxyzxyz"
}
{
    "username":"xyzxyzxyz",
    "password":"xyzxyzxyz",
    "email":"xyzxyzxyz@gmail.com"
}