如何在sitebricks客户端中发布正文



我正在使用sitebricks客户端与Java中的RESTAPI进行交互。我需要用一个非空的身体进行POST。如何在sitebricks中做到这一点?

您尚未指定要发布的请求体类型。如果您试图发送一个内容类型为"text/plain"的字符串,那么以下操作应该有效:

String body = "Request body.";
WebResponse response = web.clientOf(url)
.transports(String.class)
.over(Text.class)
.post(body);

如果您试图将已序列化为字符串的特定类型的数据发送,则可以手动设置Content-type标头:

String body = "{}";
Map<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json");
WebResponse response = web.clientOf(url, headers)
.transports(String.class)
.over(Text.class)
.post(body);

如果你有一个包含数据的Map,你想用"application/json"的内容类型发送到服务器,那么这样的东西可能是你想要的:

Map body = new HashMap();
// Fill in body with data
WebResponse response = web.clientOf(url)
.transports(Map.class)
.over(Json.class)
.post(body);

在上面的例子中有两个需要注意的要点:

  • 传递给post方法的值应为传递给transports方法的类型
  • 传递给over方法的类确定Content-Type标头的默认值以及传递给post方法的值的序列化方式。该类应该是com.google.sitebricks.client.Transport的子类,您可能希望选择com.google.sitebricks.client.transport包中的一个类

我已经尝试过了,但在webclient中有一个post()方法。

web.clientOf("http://google.com")
...
.post(...);

查看github 上的来源

https://github.com/dhanji/sitebricks/blob/master/sitebricks-client/src/main/java/com/google/sitebricks/client/WebClient.java

Rgds

最新更新