【问题标题】:How to send a curl request in java如何在java中发送curl请求
【发布时间】:2015-01-15 10:37:41
【问题描述】:

我正在使用 java WebService 发送 curl 请求,这是我的请求:

curl -d "input = a b c d" 'localhost:8090/jobs?appName=Test40&classPath=fr.aid.cim.spark.JavaWord&sync=true&timeout=1000000000'

我不知道我应该使用哪个库以及如何用 java 编写它。你能告诉我怎么做吗?

【问题讨论】:

  • 看看 ProcessBuilder。
  • 我会使用 apache HttpClient
  • 没有“卷曲请求”之类的东西。 Curl 是一个命令行工具,用于执行某种形式的在线请求。
  • 好的,谢谢您的建议,我会接受 lokk。 #Reimeus 不是重复的,因为我看到了它,但我无法将它与 localHost 请求一起使用!

标签: java curl


【解决方案1】:

如果需要执行控制台命令(本例为 curl):

Runtime runtime = Runtime.getRuntime();

try {
    Process process = runtime.exec("curl -d \"input = a b c d\" 'localhost:8090/jobs?appName=Test40&classPath=fr.aid.cim.spark.JavaWord&sync=true&timeout=1000000000'");
    int resultCode = process.waitFor();

    if (resultCode == 0) {
        // all is good
    } 
} catch (Throwable cause) {
    // process cause
}

更新(根据您的评论): 添加以下行:

System.out.println("is: " + IOUtils.toString(process.getInputStream()));
System.out.println("es: " + IOUtils.toString(process.getErrorStream()));

输出是什么? IOUtils 可以在here找到。

【讨论】:

  • 谢谢你的回答,但我的 resultCode 是 allways = 6 ??
【解决方案2】:

你应该看看Apache HttpClient 库。使用HC Fluent 组件,您可以编写如下内容:

Request.Post("http://localhost:8090/jobs?appName=Test40&classPath=fr.aid.cim.spark.JavaWord&sync=true&timeout=1000000000")
.execute().returnContent();

HC Fluent Javadocs

【讨论】:

  • 谢谢。但我得到了这个错误:java.lang.IllegalArgumentException: Illegal character in scheme name at index 4
  • 请检查 uri 字符串是否没有多余的字符等。
  • 你得到它的工作,还是需要进一步的帮助?
猜你喜欢
  • 2013-07-01
  • 2023-03-25
  • 2020-04-05
  • 1970-01-01
  • 2017-11-14
  • 2018-08-13
  • 2012-10-13
  • 1970-01-01
  • 2018-04-23
相关资源
最近更新 更多