【问题标题】:How does a curl command translate to Java code?curl 命令如何转换为 Java 代码?
【发布时间】:2016-11-23 17:45:52
【问题描述】:

我能够找到一些解决方案,但没有一个对我有用。我是 Java 新手,到目前为止在 Java 中使用 curl 还没有成功。

curl -X POST -H "Content-Type: application/json" -o output.json --data-binary @input.json http://webaddress.com

JSON 文件。

{
   "firstNumber": "00",
   "secondNumber": "12",
   "Type": "MyType",
   "data": [0,0,0,0,0]
}

任何帮助将不胜感激。

【问题讨论】:

  • 什么意思怎么翻译?
  • 你是问如何从java启动curl或者如何在java中复制curl的功能?
  • 我在问如何使用 Java 代码复制该 curl 命令的操作。

标签: java curl


【解决方案1】:

最简单的方法是从java调用命令:

Process proc = 
    run.exec(new String[] {
     "/bin/sh", 
     "-c",
     "curl -X POST -H 'Content-Type: application/json' -o output.json --data-binary @input.json http://webaddress.com"
    });

/bin/sh 是你的 shell 的位置。 -c 执行之后的命令。

当然,将你的命令移动到某种字符串常量,如果你的 shell 路径保持不变,你也可以提取一个实用方法来执行命令。

【讨论】:

    【解决方案2】:

    我对 Spring 的 RestTemplate 有很好的体验,这里有一个示例:

    JSONObject request = new JSONObject();
    request.put("attribute1", "value");
    request.put("attribute2", "value2");
    
    RestTemplate restTemplate=new RestTemplate();
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);
    HttpEntity<String> entity = new HttpEntity<String>(request.toString(), headers);
    
    ResponseEntity<String> loginResponse = restTemplate.exchange(urlString, HttpMethod.POST, entity, String.class);
    

    【讨论】:

    • 感谢您的回复,这看起来像是正在发送一个字符串。我将如何更改它以使用 curl 命令中的 --data-binary。
    • 如果文件包含原始 Json,您将读取文件并将其转换为字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 2014-08-28
    • 1970-01-01
    相关资源
    最近更新 更多