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"
}