1

无法为自定义 ThingWorx 服务设置 HTTP 状态代码。

我需要针对 Thingworx 服务中的错误情况发送适当的 HTTP 状态代码。当我使用 GenericHTTPException 时,它设置了正确的代码,但它在我的 JSON 响应中添加了“无法调用服务”,这对 AJAX 客户端不起作用。我应该能够发送纯 JSON 响应以及正确的 HTTP 状态代码

@ThingworxServiceDefinition(name = "GetServiceProviderHeirarchy", category = "PTC")
     @ThingworxServiceResult(name = "result", baseType = "JSON")
     public JSON GetServiceProviderHeirarchy(
                    @ThingworxServiceParameter(name = "seedURI", baseType = "STRING")String seedURI,
                    @ThingworxServiceParameter(name = "depth", baseType = "INTEGER")Integer depth,
                    @ThingworxServiceParameter(name = "resourceType", baseType = "STRING")String resourceType,
                    @ThingworxServiceParameter(name = "serverName", baseType = "STRING")String serverName)
                                throws Exception { 

     if(serverName == null || serverName.isEmpty()){
         JSONObject jsonErrObject = new JSONObject();
         jsonErrObject.put("message", "Values to input parameter serverName  is missing");
         logger.error("serverName is not provided");
         throw new InvalidRequestException(jsonErrObject.toString(), RESTAPIConstants.StatusCode.STATUS_BAD_REQUEST);
     }
}

实际结果:

无法在 UpstreamOslcDataServicesThing 上调用服务 GetServiceProviderHeirarchy:{“message”:“找不到资源类型 RequirementResourcec 的配置。请联系您的管理员。”}

预期结果:

{"message":"找不到资源类型 RequirementResourcec 的配置。请联系您的管理员。"}

4

1 回答 1

0

一种可能的选择是将 jax-rs 库作为 ThingWorx 资源包括在内,并根据需要抛出这些特定异常。说你可以抛出错误的请求javax.ws.rs.BadRequestException'。

if(serverName == null || serverName.isEmpty()){
    String message = "No Configuration found for resource. Please contact your administrator.";
    throw new BadRequestException(message);
}
于 2019-09-19T05:55:08.973 回答