java api在apache drill

时间:2015-07-10 12:25:46

标签: java apache-drill

我想使用java代码添加一个新的存储插件。目前我正在创建一个json文件并将其上传到钻取web ui。但它失败了。这是我的代码

def creatplugin() {
   val httpclient = new DefaultHttpClient()
    val httpPost = new HttpPost("http://ip:port/storage/hdfs1.json")
    val uploadFilePart = new FileBody(new File("D:/plugin.json"))
    val reqEntity = new MultipartEntity()
    reqEntity.addPart("hdfs1.json", uploadFilePart)
    httpPost.setEntity(reqEntity)
    httpPost.setHeader("Content-type", "application/json")
    val response = httpclient.execute(httpPost)
    println(response.getStatusLine().getStatusCode())
  }

在这种情况下,响应代码为400,请求不良。

有任何建议,出了什么问题?有没有其他方法使用java代码动态添加插件而不是rest api?

由于

2 个答案:

答案 0 :(得分:1)

问题是Jim指出的多部分实体。这是工作代码

def creatplugin() {
    val source = scala.io.Source.fromFile("D:/plugin.json").mkString
    val httpclient = new DefaultHttpClient()
    val httpPost = new HttpPost("http://ip:port/storage/hdfs1.json")
    val reqEntity = new StringEntity(source)
    httpPost.setEntity(reqEntity)
    httpPost.setHeader("content-type", "application/json")
    httpPost.setHeader("Accept", "application/json")
    val response = httpclient.execute(httpPost)
    println(response.getStatusLine().getStatusCode())
  }

答案 1 :(得分:0)

我认为它可能是多部分条目。我只是发布json数据作为帖子消息正文的一部分。这是一个有效的curl示例。请使用StringEntity。

curl -X POST -H“授权:基本bWFwcjpyb290NG1hcHI =” - H“内容类型:application / json”-d'{“name”:“nfl”,“config”:{“type”:“file” “ ”已启用“:真实的, ”连接“: ”maprfs:///“, ”工作区“:{ ”意见“:{ ”位置“: ”/mapr/demo.mapr.com/data/views“,”可写的 “:真” defaultInputFormat “:NULL}”,JSON “:{” 位置 “:”/ MAPR / demo.mapr.com /数据/ NFL / JSON “ ”可写“:假 ”defaultInputFormat“:” JSON “},” CSV “:{” 位置 “:”/ MAPR / demo.mapr.com /数据/ NFL / CSV “ ”可写“:假 ”defaultInputFormat“: ”CSV“}, ”标签“:{”位置 “:”/ MAPR / demo.mapr.com /数据/ NFL / TXT “ ”可写“:假 ”defaultInputFormat“: ”TSV“}, ”XML“:{ ”位置“:”/ MAPR /演示。 mapr.com/data/nfl/xml","writable":false,"defaultInputFormat":null}},"formats":{"csv":{"type":"text","extensions":["csv “],” 定界符 “:”, “}”,TSV “:{” 类型 “:” 文本 “ ”扩展“:[ ”TSV“, ”TXT“], ”定界符“: ”\ t“ 的},” json“:{”type“:”json“}}}}'http://maprdemo:8047/storage/nfl.json