POST请求改装2.0



我一直在尝试使用改装2.0发出POST请求,但我遇到了一些问题。我很乐意得到任何帮助。我有这个接口:

public interface HZApi {
@POST("URL")
Call<RespBody> register(@Body ReqBody request);
}

这是我的请求和响应类:

public class ReqBody {
@SerializedName("login")
String login;
@SerializedName("password")
String password;
public ReqBody(String login, String password){
    this.login = login;
    this.password = password;
  }
}
public class RespBody {
@SerializedName("login")
String login;
@SerializedName("password")
String password;
@SerializedName("isreg")
int isreg;
}

我的部分活动代码:

Retrofit retrofit = new Retrofit.Builder()
               .baseUrl("http://URL/")
               .addConverterFactory(GsonConverterFactory.create())
               .build();
        HZApi api = retrofit.create(HZApi.class);
        ReqBody req = new ReqBody(login,password);
        Call<RespBody> call = api.register(req);
        call.enqueue(new Callback<RespBody>() {
            @Override
            public void onResponse(Call<RespBody> call, Response<RespBody> response) {
                    Toast.makeText(getApplicationContext(),"OK",Toast.LENGTH_SHORT).show();
                    //answer.setText(response.body().toString());
                }
                @Override
                public void onFailure(Call<RespBody> call, Throwable t) {
                    Toast.makeText(getApplicationContext(),t.getMessage(),Toast.LENGTH_SHORT).show();
                    Log.d("MyTag",call.toString(),t);
                }
            });

当我尝试发出请求时,JSON抛出:应为BEGIN_OBJECT,但在第1行第2列路径$处为BEGIN_ARRAY

我试图在没有特殊类的情况下,只使用一个String参数来发出请求,但它也不起作用。感谢您的回复。

向服务器发送请求的方式是正确的。您确定服务器返回具有简单值的JSON对象吗?看起来它返回了JSON数组,因此您会得到这个错误Expected BEGIN_OBJECT but was BEGIN_ARRAY。若服务器返回JSON数组,则需要相应地更改RespBody类。

最新更新