如何使用liferay服务构建器的Web服务从curl URL获取JSON字符串

时间:2015-10-06 13:30:38

标签: java json web-services curl liferay

我使用服务构建器创建了服务,并将示例实体放在liferay service.xml文件中。

我的service.xml

<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 6.2.0//EN" "http://www.liferay.com/dtd/liferay-service-builder_6_2_0.dtd">
<service-builder package-path="com.temp">
  <namespace></namespace>

  <entity name="Student" local-service="true" remote-service="true">
  </entity>

  <entity name="Foo" uuid="true" local-service="true" remote-service="true">
    <!-- PK fields -->
    <column name="fooId" type="long" primary="true" />

    <!-- Group instance -->
    <column name="groupId" type="long" />

    <!-- Audit fields -->
    <column name="companyId" type="long" />
    <column name="userId" type="long" />
    <column name="userName" type="String" />
    <column name="createDate" type="Date" />
    <column name="modifiedDate" type="Date" />

    <!-- Other fields -->
    <column name="field1" type="String" />
    <column name="field2" type="boolean" />
    <column name="field3" type="int" />
    <column name="field4" type="Date" />
    <column name="field5" type="String" />

    <!-- Order -->
    <order by="asc">
      <order-column name="field1" />
    </order>

    <!-- Finder methods -->
    <finder name="Field2" return-type="Collection">
      <finder-column name="field2" />
    </finder>

    <!-- References -->
    <reference package-path="com.liferay.portlet.asset" entity="AssetEntry" />
    <reference package-path="com.liferay.portlet.asset" entity="AssetTag" />
  </entity>
</service-builder>

构建服务后,我在FooServiceImpl.java中添加了一个方法,如下所示,

@JSON
public JSONObject verifyService (String action){
  System.out.println("action----->"+action);
  JSONObject actionData=JSONFactoryUtil.createJSONObject();

  actionData.put("success", true);
  return actionData;
}

我构建了该服务,并且能够通过localhost:8080/api/jsonws使用管理员凭据访问它。

现在,当我使用下面的curl命令调用此服务时

  

curl http://localhost:8080/api/jsonws/XXXX-Portlets.foo/verify-service     -u test@liferay.com:test     -d action ='temp'

我能够在我实现的方法中获取action参数值。 现在我想从curl,

发布以下值
  

curl http://localhost:8080api/jsonws/XXXXX-Portlets.foo/verify-service     -u test@liferay.com:test     -d'{“action”:“verify”}'

我无法在我的网络服务中获得这个json !!

我尝试添加以下内容

  

curl -H“Content-Type:application / json”-H“Accept:application / json     -XPOST ....“

卷曲并将参数类型从字符串更改为jsonObject,但没有运气。

我在这里缺少任何注释吗?

0 个答案:

没有答案