我想使用 java 代码添加一个新的存储插件。目前我正在创建一个 json 文件并将其上传到drill 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动态添加插件?
谢谢
最佳答案
正如吉姆所指出的,问题是多部分实体。这是工作代码
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())
}
关于java api在apacherill中添加存储插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31340731/