我正在尝试通过改造来注册用户。我的错误在哪里?
这是我的界面:
public interface ChatRoomAPI {
String BASE_URL="https://karyab-api.herokuapp.com/";
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addConverterFactory(ScalarsConverterFactory.create())
.build();
@POST("register")
Call<RegisterResponse> registerUser(@Body RegisterData registerData);
这是寄存器pojo
类的正文:
public class RegisterData {
@SerializedName("email")
@Expose
private String email;
@SerializedName("password")
@Expose
private String password;
public String getEmail() {return email;}
public void setEmail(String email) {this.email = email;}
public String getPassword() {return password;}
public void setPassword(String password) {this.password = password;}
这是响应pojo类:
public class RegisterResponse {
@SerializedName("user")
@Expose
private User user;
@SerializedName("token")
@Expose
private String token;
public User getUser() {return user;}
public void setUser(User user) {this.user = user;}
public String getToken() {return token;}
public void setToken(String token) { this.token = token;}
我的活动中的代码:
private void registerUser(RegisterData registerData) {
ChatRoomAPI webService =
ChatRoomAPI.retrofit.create(ChatRoomAPI.class);
Call<RegisterResponse> call = webService.registerUser(registerData);
call.enqueue(new Callback<RegisterResponse>() {
@Override
public void onResponse(@NonNull Call<RegisterResponse> call,
@NonNull Response<RegisterResponse> response) {
if (response.isSuccessful()) {
RegisterResponse body = response.body();
Toast.makeText(LoginActivity.this,
body.getToken(),
Toast.LENGTH_SHORT).show();
}else{
try {
String errorBodyJson=response.errorBody().string();
Gson gson=new Gson();
ErrorResponce
errorResponce=gson.fromJson(errorBodyJson,
ErrorResponce.class);
Toast.makeText(LoginActivity.this,
response.message(),
Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void onFailure(Call<RegisterResponse> call, Throwable t) {
Toast.makeText(LoginActivity.this,
"Received " + t.getCause() + " items from service",
Toast.LENGTH_SHORT).show();
}
});
我不知道我的错误在哪里。在邮递员中,我得到200 OK,但是在这里,我得到了错误的请求。
这并不复杂,但是我很累要解决它,请帮助我并节省时间。
这是邮递员的结果:
{
"user": {
"id": 26,
"updatedAt": "2019-08-16T16:35:04.347Z",
"createdAt": "2019-08-16T16:35:04.347Z",
"email": null,
"password": null
},
"token": "eyJhbGciOiJIUzI...
}
这是邮递员的输入内容。
{
"email":"aaaaa",
"password":"11111"
}
答案 0 :(得分:0)
您应该使用@FormUrlEncoded
进行尝试创建类RegResponse
Process: com.example.tokoemak.tokoemak, PID: 5679
android.database.sqlite.SQLiteException: no such table: OrderDetail (code 1): , while compiling: INSERT INTO OrderDetail(ProdukId,NamaProduk,Jumlah,Harga,Diskon) VALUES('20','ULTRA MILK Susu UHT Putih Full Cream 250 ml','1','5000','0' );
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1678)
at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1608)
at com.example.tokoemak.tokoemak.databases.Database.addToCart(Database.java:59)
at com.example.tokoemak.tokoemak.activities.ItemDetail$1.onClick(ItemDetail.java:66)
at android.view.View.performClick(View.java:5647)
at android.view.View$PerformClick.run(View.java:22465)
at android.os.Handler.handleCallback(Handler.java:754)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:163)
at android.app.ActivityThread.main(ActivityThread.java:6238)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794) Disconnected from the target VM, address: 'localhost:8600', transport: 'socket'
创建班级用户
public class RegResponse{
@SerializedName("user")
private User user;
@SerializedName("token")
private String token;
public void setUser(User user){
this.user = user;
}
public User getUser(){
return user;
}
public void setToken(String token){
this.token = token;
}
public String getToken(){
return token;
}
@Override
public String toString(){
return
"RegResponse{" +
"user = '" + user + '\'' +
",token = '" + token + '\'' +
"}";
}
}
创建界面
public class User{
@SerializedName("createdAt")
private String createdAt;
@SerializedName("password")
private Object password;
@SerializedName("id")
private int id;
@SerializedName("email")
private Object email;
@SerializedName("updatedAt")
private String updatedAt;
public void setCreatedAt(String createdAt){
this.createdAt = createdAt;
}
public String getCreatedAt(){
return createdAt;
}
public void setPassword(Object password){
this.password = password;
}
public Object getPassword(){
return password;
}
public void setId(int id){
this.id = id;
}
public int getId(){
return id;
}
public void setEmail(Object email){
this.email = email;
}
public Object getEmail(){
return email;
}
public void setUpdatedAt(String updatedAt){
this.updatedAt = updatedAt;
}
public String getUpdatedAt(){
return updatedAt;
}
@Override
public String toString(){
return
"User{" +
"createdAt = '" + createdAt + '\'' +
",password = '" + password + '\'' +
",id = '" + id + '\'' +
",email = '" + email + '\'' +
",updatedAt = '" + updatedAt + '\'' +
"}";
}
}
现在进入您的MainActivity
public interface ApiInterface {
@FormUrlEncoded
@POST
Call<RegResponse> register(@Url String url, @Field("email") String user,
@Field("password") String password);
}