android - Retrofit 2 发送重复参数

标签 android retrofit2 okhttp

我在我的应用程序中使用改造来发送 POST 请求,但是参数被发送了两次,我找不到原因。

这是我的 API:

public interface ChoferesApi {
    @POST("myurl/")
    Call<Chofer> registroChofer(@Body Chofer chofer);
}

我的 POJO 对象:

public class Chofer {
  private String apellido;
  private String nombre;
  private String email;
  private int dni;
  private String sexo;
  private Date fechaNacimiento;
  private String password;

  //Getters & Setters...

请求:

Call<Chofer> call = RestClient.getInstance().registroChofer(chofer);
call.enqueue(new Callback<Chofer>() { ... });

在 logcat 中我只看到一次参数(根据 okhttp):

    11-09 18:46:53.170 27197-27742/com.mypackage D/OkHttp: --> POST http://192.168.1.5:3000/myurl http/1.1
    11-09 18:46:53.170 27197-27742/com.mypackage D/OkHttp: Content-Type: application/json; charset=UTF-8
    11-09 18:46:53.170 27197-27742/com.mypackage D/OkHttp: Content-Length: 139
    11-09 18:46:53.170 27197-27742/com.mypackage D/OkHttp: {"apellido":"aaa","sexo":"masculino","email":"a@a.com","fecha_nacimiento":"2016-10-09","nombre":"aaa","password":"effdggffy","dni":1234564}
    11-09 18:46:53.170 27197-27742/com.mypackage D/OkHttp: --> END POST (139-byte body)

但是在我的服务器中,接收到以下参数:

Started POST "/myurl" for 192.168.1.13 at 2016-11-09 16:39:05 -0300
Cannot render console from 192.168.1.13! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Processing by MyController#myaction as HTML
Parameters: {"apellido"=>"gh", "sexo"=>"masculino", "email"=>"a@a.com", "fecha_nacimiento"=>"2016-10-09", "nombre"=>"ggg", "password"=>"[FILTERED]", "dni"=>54577457, "registro"=>{"apellido"=>"gh", "sexo"=>"masculino", "email"=>"a@a.com", "fecha_nacimiento"=>"2016-10-09", "nombre"=>"ggg", "password"=>"[FILTERED]", "dni"=>54577457}}

可以看出,参数被发送了两次,第二次是在一个名为“registro”的对象中,我不明白为什么。我尝试使用 POSTMAN 发送相同的请求并且参数只发送一次,所以这不是服务器端问题。

最佳答案

您将其作为@Body(并且您的 POJO 可能正在解析为 JSON)而不是@Query 参数发送,所以这可能是个问题?

关于android - Retrofit 2 发送重复参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40514977/

相关文章:

java - Android SurfaceView UI 线程不工作

java - Retrofit 2 的自定义 CallAdapter 和 Android 上的线程问题

java - 即使在对象已初始化后仍为空对象引用

android - ConstraintLayout 中的 TextView 剪辑文本和 layout_margin 无法正确显示

android - 如何使用gradle为味道配置不同的buildType

php - mysql_fetch_assoc() : supplied argument is not a valid MySQL

java - 使用 jackson 从改造中反序列化 json,其中相同的变量名可以代表两个不同的对象

android - 通过 retrofit2 取消所有请求

java - 使用 Okhttp3 的 OPTIONS/HEAD REST API 请求

android - 在默认 cookiestore 中手动设置 cookie 并在 okhttp 请求中使用它