我正在使用sitebricks-client与Java中的REST API进行交互。我需要使用非空主体进行POST。如何在Sitebricks中做到这一点?

最佳答案

您尚未指定要发布的请求正文。如果您尝试发送Content-Type为“ text / plain”的字符串,那么以下方法应该起作用:

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


如果您尝试发送已经序列化为String的特定类型的数据,则可以手动设置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包含要以Content-Type为“ 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包中找到的类之一。

10-04 10:18