2017-06-14 123 views
0

我创建/使用retrofit2我的服务器端注册新用户

<?php 

    $name= $_POST['name']; 
    $email = $_POST['email']; 
    $password= $_POST['password']; 
    $gender= $_POST['gender']; 

    $con = mysqli_connect("localhost", "root", "qwerty", "db"); 
    $query= mysqli_query($con, "INSERT INTO users(name,email, password, gender) VALUES('$name','$email', '$password', '$gender')"); 

    if($query){ 
     echo "You are sucessfully Registered"; 
    } 

    else{ 
     echo "your details could not be registered"; 
    } 

    mysqli_close($con); 

?> 

我的模型类是

public class User { 

    @SerializedName("name") 
    @Expose 
    public String name; 
    @SerializedName("email") 
    @Expose 
    public String email; 
    @SerializedName("password") 
    @Expose 
    public String password; 
    @SerializedName("gender") 
    @Expose 
    public String gender; 

    public User(String name, String email, String password, String gender) { 
     this.name = name; 
     this.email = email; 
     this.password = password; 
     this.gender = gender; 
    } 

邮政服务

@POST("register.php") 
Call<User> createUser(@Body User user); 

发布数据

mRegisterButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       if (validateForm()){ 
        mUserCall = mRestManager.getJobService() 
          .createUser(new User(mNameEditText.getText().toString(), 
               mEmailEditText.getText().toString(), 
               mPasswordEditText.getText().toString(), 
               mGenders[position])); 
        mUserCall.enqueue(new Callback<User>() { 
         @Override 
         public void onResponse(Call<User> call, Response<User> response) { 
          User user1 = response.body(); 
          Toast.makeText(getApplicationContext(), user1.name , Toast.LENGTH_SHORT).show(); 
         } 

         @Override 
         public void onFailure(Call<User> call, Throwable t) { 

          Log.e("REGISTER_ERROR", "Message is " + t.getMessage()); 
         } 
        }); 
       } 
      } 
     }); 

我收到提示

java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $ 

我已经找到了一些解决方案,并作出

@FormUrlEncoded 
    @POST("register.php") 
    Call<User> createUser(@Field("name") String name, 
          @Field("email") String email, 
          @Field("password") String password, 
          @Field("gender") String gender); 

发生相应的变化,但它也不起作用,同样的错误信息,如何解决这个错误。

+0

使用调用

+0

添加你的json响应 –

+0

你没有返回一个User对象,你正在为PHP返回一个成功/失败的字符串。 –

回答

1

检查你的回应,它是不同于你的期望。

Json必须从“{”也有响应是不同于你的Pojo 用户所以从新的响应使新的Pojo。

相关问题