46.16. 使用 Raw 操作
通过对调用的所有方面具有完全原始控制,将 HTTP 请求发送到具有完整的原始控制。路由中必须执行任何请求和响应正文的序列化或反序列化。Content-Type HTTP 标头将根据 format 选项自动设置,但可以通过 rawHttpHeaders 选项覆盖。
| 参数 | 类型 | 描述 | 默认 | 必填 |
|---|---|---|---|---|
| request body |
| HTTP 请求正文 | ||
| rawPath |
| 域名后端点 URL 部分,如 '/services/data/v51.0/sobjects/Account/' | x | |
| rawMethod |
| HTTP 方法 | x | |
| rawQueryParameters |
| 要作为查询参数包含的消息标头的逗号分隔列表。不要 url-encode 值,因为这将自动执行。 | ||
| rawHttpHeaders |
| 以逗号分隔的消息标头列表,来作为 HTTP 标头包含 |
46.16.1. 查询示例 复制链接链接已复制到粘贴板!
在本例中,我们将发送查询到 REST API。查询必须在名为"q"的 URL 参数中传递,因此我们将创建一个名为 q 的消息标头并告知原始操作将消息标头作为 URL 参数包含:
from("direct:queryExample")
.setHeader("q", "SELECT Id, LastName FROM Contact")
.to("salesforce:raw?format=JSON&rawMethod=GET&rawQueryParameters=q&rawPath=/services/data/v51.0/query")
// deserialize JSON results or handle in some other way
from("direct:queryExample")
.setHeader("q", "SELECT Id, LastName FROM Contact")
.to("salesforce:raw?format=JSON&rawMethod=GET&rawQueryParameters=q&rawPath=/services/data/v51.0/query")
// deserialize JSON results or handle in some other way
46.16.2. SObject 示例 复制链接链接已复制到粘贴板!
在这个示例中,我们将在 创建 操作中传递 REST API。由于 raw 操作不执行任何序列化,因此我们确保在消息正文中传递 XML
from("direct:createAContact")
.setBody(constant("<Contact><LastName>TestLast</LastName></Contact>"))
.to("salesforce:raw?format=XML&rawMethod=POST&rawPath=/services/data/v51.0/sobjects/Contact")
from("direct:createAContact")
.setBody(constant("<Contact><LastName>TestLast</LastName></Contact>"))
.to("salesforce:raw?format=XML&rawMethod=POST&rawPath=/services/data/v51.0/sobjects/Contact")
响应是:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Result>
<id>0034x00000RnV6zAAF</id>
<success>true</success>
</Result>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Result>
<id>0034x00000RnV6zAAF</id>
<success>true</success>
</Result>