wualan514 2017-11-02 08:04 采纳率: 0%
浏览 843

在java中用Httpclient,Kylin中创建cube报错

1、字符串:
String sql ="{" +
" \"name\": \"test_cube7\"," +
" \"model_name\": \"wj_test\"," +
" \"description\": \"\"," +
" \"null_string\": null}";
String cubeDescData = JsonStr.sql.replaceAll("[\r\n]", "");

cubeDescData =cubeDescData.replaceAll("[\n]", "");

cubeDescData = cubeDescData.replaceAll(" ", "");
cubeDescData = cubeDescData.trim();
JSONObject jsonParam = new JSONObject();

        jsonParam.put("cubeDescData", cubeDescData);

        jsonParam.put("project", "mytest");
        jsonParam.put("cubeName", "test_cube7");

         StringEntity uefEntity = new StringEntity(list.toString(),"utf-8");  
         uefEntity.setContentEncoding("UTF-8");    
         uefEntity.setContentType("application/json");    
        post.setEntity(uefEntity);
        报如下错:
        "msg":"Could not read JSON: Can not deserialize instance of org.apache.kylin.rest.request.CubeRequest out of START_ARRAY token\n at
  • 写回答

1条回答 默认 最新

  • lshen01 2023-03-16 09:57
    关注

    参考GPT和自己的思路:

    根据您提供的信息,我猜测您在使用Java中的Httpclient和Kylin API创建一个cube,但在执行post请求时出现了报错。根据报错信息,我认为可能是由于JSON格式不正确导致的。出现这种情况的原因可能是您在执行post请求时使用了一个错误的参数类型或格式。

    在您的代码中,您使用了一个字符串类型的变量来存储JSON格式的数据,并使用了JsonStr.sql来对其进行处理。然后,您将字符串中的换行符、空格等非必要字符进行替换并赋值给了一个新的变量cubeDescData。接下来,您将cubeDescData封装到了一个JSONObject中,并将其以application/json的方式设为post请求的实体。但是,根据报错信息,看起来post请求的实体应该是一个名为CubeRequest的对象,而不是一个JSONArray。因此,我建议您检查以下几点:

    • 检查jsonParam对象中的数据类型是否正确,是否包含正确的属性和值
    • 检查post请求的URL和Kylin API文档中指定的URL是否一致
    • 确定您使用的版本是否与Kylin API要求的版本相匹配
    • 在使用Httpclient提交post请求时,确保正确设置请求头和实体类型

    希望以上提示对您有所帮助,如果问题仍然存在,请提供更多信息以便我提供更准确的解答。

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题