0

Java で REST API を操作するためにsitebricks-clientを使用しています。空でないボディで POST を実行する必要があります。サイトブリックでそれを行うにはどうすればよいですか?

4

2 に答える 2

1

投稿しようとしているリクエスト ボディの種類が指定されていません。Content-Type が「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);

"application/json" の Content-Type でサーバーに送信したいデータを含む Map がある場合、次のような方法が考えられます。

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

上記の例には、注意すべき重要な点が 2 つあります。

  • メソッドに渡される値は、postメソッドに渡される型である必要がありtransportsます。
  • メソッドに渡すクラスoverによって、Content-Type ヘッダーの既定値と、メソッドに渡される値をpostシリアル化する方法が決まります。クラスは のサブクラスである必要があり、おそらくパッケージcom.google.sitebricks.client.Transportにあるクラスの 1 つを選択する必要があります。com.google.sitebricks.client.transport
于 2012-09-25T16:23:13.630 に答える
0

試したことはありませんが、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

于 2012-09-23T20:15:13.320 に答える