jmo*_*ira 4 java jersey jakarta-ee
我必须将pojo 发布到仅通过表单数据(MediaType.APPLICATION_FORM_URLENCODED)接受参数的服务器。我知道 jersey 客户端可以将对象转换为 xml、json 和其他类型,但是尝试转换为 APPLICATION_FORM_URLENCODED 会给出一个异常,表明没有指定类型的正文编写器可用。
有没有办法将对象序列化为 application_form_urlencoded MultivaluedMap,或者我必须逐个手动获取属性以形成结果 MultivaluedMap?根据问题上下文,创建一个使用 jersey 序列化的适配器在我看来并不是合适的解决方案。
POST 对象
@XmlRootElement
public class POSTableObject {
private int a;
private String b;
public int getA() { return a; }
public void setA(int a) { this.a = a; }
public String getB() { return b; }
public void setB(String b) { this.b = b; }
}
Run Code Online (Sandbox Code Playgroud)
使用 Jersey 客户端发布操作
ClientResponse response = client.resource(url).type(MediaType.APPLICATION_FORM_URLENCODED).accept(MediaType.APPLICATION_JSON).post(ClientResponse.class, postableObject);
Run Code Online (Sandbox Code Playgroud)
JAX-RS 提供者只需要提供到application/x-www-form-urlencodedfor 的映射MultivaluedMap<String,String>。而且我很确定开箱即用的 Jersey 不会提供从application/x-www-form-urlencoded到常规 POJO的额外映射器。您可以编写自己的客户端提供程序,但根据您需要这样做的频率,将 POJO 字段自己映射到 URL 字段可能更简单。
| 归档时间: |
|
| 查看次数: |
11233 次 |
| 最近记录: |