如何使用docker remote api创build容器在java中?

我想在这里使用docker remote api。 我已经在这个命令成功创build容器:

curl -v -X POST -H "Content-Type: application/json" -d '{"Image": " registry:2",}' http://192.168.59.103:2375/containers/create?name=test_remote_reg 

然后,我在java中使用HttpClient(4.3.1)尝试通过以下代码创build容器:

  String containerName = "test_remote_reg"; String imageName = "registry:2"; String url = DockerConfig.getValue("baseURL")+"/containers/create?name="+containerName; List<NameValuePair> ls = new ArrayList<NameValuePair>(); ls.add(new BasicNameValuePair("Image",imageName)); UrlEncodedFormEntity fromEntity = new UrlEncodedFormEntity(ls, "uTF-8"); HttpPost post = new HttpPost(url); post.setHeader("Content-Type", " application/json"); if(null!=fromEntity) post.setEntity(fromEntity); HttpClient client = new DefaultHttpClient(); client.execute(post); 

它没有工作,并抛出错误:

 invalid character 'I' looking for beginning of value 

我只是添加标题信息并添加关于“Image:test_remote_reg”的参数对。
我的java代码有什么问题? 他们之间有什么不同? 我应该编辑我的Java代码?

考虑到这是一个JSON调用,你可以使用Java POST中使用JSON的HTTP POST的答案之一,就像(用你的JSON参数replaceJSON部分):

 HttpClient httpClient = new DefaultHttpClient(); try { HttpPost request = new HttpPost("http://yoururl"); StringEntity params =new StringEntity("details={\"name\":\"myname\",\"age\":\"20\"} "); request.addHeader("content-type", "application/json"); request.addHeader("Accept","application/json"); request.setEntity(params); HttpResponse response = httpClient.execute(request); // handle response here... }catch (Exception ex) { // handle exception here } finally { httpClient.getConnectionManager().shutdown(); }