簡體   English   中英

如何通過Java中的RESTful客戶端將JSON對象傳遞到服務器

[英]How to pass JSON object to server from RESTful client in java

我正在創建一個Web應用程序。 我想使用Java SE應用程序執行管理操作。 為此,我在SE項目中創建了RESTful ShoppingAdminClient 我需要將JSON對象從客戶端傳遞到服務器。 我嘗試過這個

 public static void main(String[] args) throws JSONException {
    ShoppingAdminClient sac = new ShoppingAdminClient();
    JSONObject jo = new JSONObject();
    jo.put("itemName", "Itemms");
    sac.create_JSON(jo);

}

但是我有以下例外,

Exception in thread "main" com.sun.jersey.api.client.ClientHandlerException: com.sun.jersey.api.client.ClientHandlerException: A message body writer for Java type, class shoppingadmin.Item, and MIME media type, application/json, was not found
at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:149)
at com.sun.jersey.api.client.Client.handle(Client.java:648)
at com.sun.jersey.api.client.WebResource.handle(WebResource.java:670)
at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)
at com.sun.jersey.api.client.WebResource$Builder.post(WebResource.java:563)
at shoppingadmin.ShoppingAdminClient.create_JSON(ShoppingAdminClient.java:69)
at shoppingadmin.ShoppingAdmin.main(ShoppingAdmin.java:27)
    Caused by: com.sun.jersey.api.client.ClientHandlerException: A message body writer for Java type, class shoppingadmin.Item, and MIME media type, application/json, was not found
at             com.sun.jersey.api.client.RequestWriter.writeRequestEntity(RequestWriter.java:288)
at com.sun.jersey.client.urlconnection.URLConnectionClientHandler._invoke(URLConnectionClientHandler.java:204)
at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:147)
... 6 more
Java Result: 1

如何將JSON類型的對象傳遞給服務器?

提前致謝!

對於Jersey客戶端,您可以創建一個Jersey 客戶端實例以將JSON發布到服務器。 因此,為了以JSON格式發送,您可以使用Jackson JSON庫 ,並且可以通過添加Jersey-JSON jar將其與Jersey捆綁在一起。 您還需要添加Jersey客戶依賴項。

    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-json</artifactId>
        <version>1.17</version>
    </dependency>

        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-client</artifactId>
            <version>1.17</version>
        </dependency>

然后您的客戶端代碼將如下所示:

public String requestResource(String baseURL, String path) {
        Client wsClient = Client.create();
        WebResource rs = wsClient.resource(baseURL);
        String response = rs.path(path).type(MediaType.APPLICATION_JSON).post(String.class, item);
        return response;

    }

請注意, type方法中的MediaType.APPLICATION_JSON指定數據格式。 item包含您要發送到服務器的數據。 另外,不要忘記將以下行放在web.xml以便所有POJO類都將自動序列化為JSON。

        <init-param>
            <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
            <param-value>true</param-value>
        </init-param>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM