我需要使用以下复杂类型作为参数将HTTP Post发送到REST API。我查看了泽西的文档,它只能发送一个键值对。如何使用jersey发送带有以下参数的HTTP Post请求。
{
"key": "example key",
"message": {
"html": "<p>Example HTML content</p>",
"text": "Example text content",
"subject": "example subject",
"from_email": "message.from_email@example.com",
"from_name": "Example Name",
"to": [
{
"email": "recipient.email@example.com",
"name": "Recipient Name"
}
],
"headers": {
"Reply-To": "message.reply@example.com"
},
"important": false,
"track_opens": null,
"track_clicks": null,
"auto_text": null,
"auto_html": null,
"inline_css": null,
"url_strip_qs": null,
"preserve_recipients": null,
"view_content_link": null,
"bcc_address": "message.bcc_address@example.com",
"tracking_domain": null,
"signing_domain": null,
"return_path_domain": null,
"merge": true,
"global_merge_vars": [
{
"name": "merge1",
"content": "merge1 content"
}
],
"merge_vars": [
{
"rcpt": "recipient.email@example.com",
"vars": [
{
"name": "merge2",
"content": "merge2 content"
}
]
}
],
"tags": [
"password-resets"
],
"subaccount": "customer-123",
"google_analytics_domains": [
"example.com"
],
"google_analytics_campaign": "message.from_email@example.com",
"metadata": {
"website": "www.example.com"
},
"recipient_metadata": [
{
"rcpt": "recipient.email@example.com",
"values": {
"user_id": 123456
}
}
],
"attachments": [
{
"type": "text/plain",
"name": "myfile.txt",
"content": "ZXhhbXBsZSBmaWxl"
}
],
"images": [
{
"type": "image/png",
"name": "IMAGECID",
"content": "ZXhhbXBsZSBmaWxl"
}
]
},
"async": false,
"ip_pool": "Main Pool",
"send_at": "example send_at"
}
我查看了使用Jersey发送HTTP Post的其他问题,我发现的只是一种只发送key\value
对作为参数而不是像上面那样复杂的字符串类型的方法。
答案 0 :(得分:0)
你应该看一下JAXB,它允许你从“对象”中“自动”构建“复杂参数”。基本上,该过程将定义一个类,该类表示您作为REST API资源接受的请求消息呈现的数据结构,然后使用您想要POST的数据填充它并发送它。在这个问题中,您可以找到有关如何做到这一点的更多详细信息:Can jersey clients POST a JAXB object to the server using JSON?