Spring Android で RoboSpice を使用して REST API 呼び出しを実行しています。データは、Content-Type を application/x-www-form-urlencoded に設定して送信する必要があります。
次のような Pojo クラスがあるとします。
public class Pojo {
private String pojoAttribute;
// getter + setter
}
これが私のリクエストクラスです:
public class PojoRequest extends AbstractApiRequest<PojoResult> {
private Pojo pojo;
public PojoRequest(Pojo pojo) {
super(PojoResult.class);
this.pojo = pojo;
}
@Override
public PojoResult loadDataFromNetwork() throws Exception {
HttpEntity<Pojo> requestEntity = new HttpEntity<Pojo>(pojo, getDefaultHeaders());
String url = buildUrlForPath("mypath");
RestTemplate restTemplate = getRestTemplate();
restTemplate.getMessageConverters().add(new FormHttpMessageConverter());
return restTemplate.postForObject(url, requestEntity, PojoResult.class);
}
}
したがって、次の本文を送信する必要があるとします:
pojo_attribute=foo
FormHttpMessageConverter が POJO を処理しないため、コードが機能しなくなりました。
私ができるようにしたいのは、次のようなものです。
public class Pojo {
@FormProperty("pojo_attribute")
private String pojoAttribute;
// getter + setter
}
POJO を key=value 形式に変換する魔法の HttpMessageConverter を使用して、Jackson が @JsonProperty で行うのと同じ方法で @FormProperty (存在しない) アノテーションを調べて pojoAttribute を pojo_attribute に変換します。
私の質問は次のとおりです:
-既存のクラス/注釈でこれを行うことは可能ですか?
- 同様のことを行う別の方法はありますか?
- 独自の HttpMessageConverter と一連の注釈を作成して、それを行うとやり過ぎでしょうか?