【问题标题】:How to send the JSON data in rest web services?如何在 REST Web 服务中发送 JSON 数据?
【发布时间】:2013-09-13 08:34:08
【问题描述】:

如何在 REST Web 服务中发送 JSON 数据? 我有一个 json 对象,其中包含产品 ID、商店 ID、价格、产品单位、数量 values.Here 除产品单位值外,所有值均为整数。 现在,我想将这些值发送到 REST Web 服务中。 您能否提供任何样品或任何有价值的建议?

【问题讨论】:

    标签: json web-services rest ibm-mobilefirst


    【解决方案1】:

    您的 JSON 输入:

    {
      "productId": "p123",
      "storeId": "s456",
      "price": 12.34,
      "productUnit": "u789",
      "quantity": 42
    }
    

    JAXB 类:

    @XmlRootElement
    public class MyJaxbBean {
        public String productId;
        public String storeId;
        public double price;
        public String productUnit;
        public int quantity;
    
        public MyJaxbBean() {} // JAXB needs this
    
        public MyJaxbBean(String productId, String storeId, double price, String productUnit, int quantity) {
            // set members
        }
    }
    

    JAX-RS 方法。

    @PUT
    @Consumes("application/json")
    public Response putMyBean(MyJaxbBean theInput) {
        // Do something with theInput
    
        return Response.created().build();
    }
    

    有关详细信息,请参阅 the documentation of Jersey(JAX-RS 的 RI)。

    【讨论】:

    • 感谢您的回复。但是我想在网络服务中发送产品ID、商店ID、价格、产品单位、数量作为参数。您能告诉我吗?
    • @Kiran 您应该能够编写具有这些属性的类。请至少尝试一下。
    • Ok..Cool..!我想将这些参数作为 jsonobject 发送。告诉我如何在 Web 服务中接收 jsonobject?
    • 我做到了。 @Consumes("application/json") 足以将 JSON 映射到 MyJaxbBean。
    • 好的...谢谢您的指导..!
    【解决方案2】:

    由于您已使用 Worklight 标记对此进行了标记,因此我假设您的意思是询问如何将 json 数据从 Worklight 客户端发送到外部 REST 服务。为了在 Worklight 中执行此操作,您需要使用 Worklight HTTP 适配器。请参阅此处的文档:http://public.dhe.ibm.com/software/mobile-solutions/worklight/docs/v600/04_02_HTTP_adapter_-_Communicating_with_HTTP_back-end_systems.pdf

    创建 Worklight 适配器后,您可以像这样从客户端发送 JSON 数据:

    /**********************************************************************************
    *                           Http Adapter call
    **********************************************************************************/
    function callAdapter(){
    
        var myJSONObject = {
            productId: 123, 
            storeId: 123, 
            price: 342, 
            productUnit: "myUnit",
            quantity: 4
        };
    
        var invocationData = {
                adapter : 'MyHttpAdapter',
                procedure : 'myAdapterProcedure',
                parameters : [myJSONObject]
        };
    
        WL.Client.invokeProcedure(invocationData, {
            onSuccess : success,
            onFailure : failure
        });
    }
    
    function success(response){
        console.log("adapter Success");
        console.log(response);
    }
    
    function failure(response){
        console.log("adapter Failure");
        console.log(response);
    }
    

    【讨论】:

    • 是的..绝对正确。我是这样编写代码的...但是我需要在我的网络服务中接收这个 json obj ..我不知道该怎么做。现在有 json 对象包含所有值,例如产品 ID、商店 ID 等。所以我想在我的网络服务中发布这些对象...怎么做?请告诉我。
    • 其实我要做的是,通过rest web service将我的json数据发送到我的数据库中。所以我问如何在我的控制器(webservices)中发布这个json数据?我希望现在你可以理解我的问题。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-10
    • 2011-02-24
    • 2016-06-12
    相关资源
    最近更新 更多