0
'@Bodyパラメータはフォームまたは複数部分のエンコーディングで使用できません' FormUrlEncodedでDTOを送信すると、@ FormUrlEncodedを削除すると自然に が削除されます。エラーが発生する FormUrlEncoded用の私のサーバー構成FormUrlEncodedでDTOを送信するとRerofit2投稿エラーが発生する
FormUrlEncodedでDTOを送信したいのですが、どうすればいいですか?このような
RestAPI.java
public interface RestAPI {
interface Join {
@FormUrlEncoded
@POST("/api/users")
Call<Res> createTask(@Body User user);
}
Retrofit RETROFIT = new Retrofit.Builder().baseUrl(Config.ServerUrl).addConverterFactory(GsonConverterFactory.create()).build();
}
public class User {
String username;
String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
Res.java
public class Res {
private Boolean response;
private String msg;
public Boolean getResponse() {
return response;
}
public void setResponse(Boolean response) {
this.response = response;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
Main.java
user = new User();
user.setUsername("TEST");
user.setPassword("1234");
RestAPI.Join join = RestAPI.RETROFIT.create(RestAPI.Join.class);
Call<Res> resCall = join.createTask(user);
resCall.enqueue(new Callback<Res>() {
@Override
public void onResponse(Call<Res> call, Response<Res> response) {
System.out.println(response.body().getResponse());
}
@Override
public void onFailure(Call<Res> call, Throwable t) {
}
});
Thansk、問題、サーバーの問題、サーバー入力コード 'app.use(bodyParser())'を解決しました。サーバーがフォームデータをポストできるようになりましたが、 –