我在我的應用程序中使用改進來發送POST請求,但參數正在發送兩次,我找不到原因。改裝2發送重複的參數
這是我的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":"[email protected]","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"=>"[email protected]", "fecha_nacimiento"=>"2016-10-09", "nombre"=>"ggg", "password"=>"[FILTERED]", "dni"=>54577457, "registro"=>{"apellido"=>"gh", "sexo"=>"masculino", "email"=>"[email protected]", "fecha_nacimiento"=>"2016-10-09", "nombre"=>"ggg", "password"=>"[FILTERED]", "dni"=>54577457}}
可以看出,這些參數被髮送兩次,物體內第二次被稱爲「registro」我能不知道爲什麼。我嘗試使用POSTMAN發送相同的請求,並且參數只發送一次,所以這不是服務器端問題。
是的,我的POJO類正在被解析爲JSON。我使用Body註解是因爲我想以POST參數的形式發送數據。如果我使用查詢註釋,數據將作爲URL中的查詢參數發送,這不是主意。 – VorteXavier
@VorteXavier好吧,我明白了。當你通過郵差發送郵件時,你也可以將它作爲JSON發送或作爲表單參數發送? –
是的,我將它們視爲表單參數。我會盡力將它作爲Json明天發送。 – VorteXavier