我正在使用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
包中找到的类之一。