我有一个curl命令,它给出一个JSON响应。我想在java中使用这个curl命令,并在java中解析JSON响应。可以这样做吗?
使用下面的Java代码:
public static void main(String[] args) throws Throwable {
try {
InputStream stream = Runtime.getRuntime().exec("curl --globoff --insecure --silent -u username:password -X GET -H 'Content-Type: application/json' \"http://ficcjira.xyz.com/rest/api/2/search?jql=project=ABC&fields=Timetracking\"").getInputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(stream), 1);
input.readLine();
input.read();
input.read();
DataReader reader = new JsonReader(input)
.addField("TimeSpent", "//array/object/timespent")
.addRecordBreak("//array/object");
/*reader = new TransformingReader(reader)
.add(new BasicFieldTransformer("TimeSpent").stringToDouble());*/
DataWriter writer = new StreamWriter(System.out);
JobTemplate.DEFAULT.transfer(reader, writer);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
出现以下错误:
Cannot run program "curl": CreateProcess error=2, The system cannot find the file specified
4条答案
按热度按时间qlfbtfca1#
这是一种很糟糕的访问Jira Rest API的方式。因为它是一个REST API,你可以用很多方式调用它。其中一些是:
1.适用于Java的Rest Java客户端. https://marketplace.atlassian.com/plugins/com.atlassian.jira.jira-rest-java-client/server/overview
我这里有一些示例代码:https://github.com/somaiah/jrjc
1.如果你使用的是Spring,你可以使用RestTemplate。我这里有一个小的示例:https://github.com/somaiah/restTemplate
当然,有一个完整的选择为您- Restlet,Apache公用资源等。
只有在从bash脚本调用curl选项时,才应该使用curl选项。
wrrgggsh2#
/* 注意:您的密钥(test.key.pem)和证书(test.crt.pem)应该位于正确的目录中。对于glassfish,它位于“~/glassfish 4/glassfish/domains/domain 1/config”中,或者您可以通过更改“--cert”、“test.crt.pem”--〉“/home/user/files/test.crt.pem”来指定确切的位置。与密钥相同。*/
doinxwow3#
将根据您提到的错误进行回答。您需要安装cUrl并确保它已添加到PATH变量中。
若要检查,您可以尝试从Windows命令提示字符执行curl命令。如果您无法看到有效的回应,可能是因为您没有cUrl,或是PATH变数中没有cUrl。
要安装,请在https://curl.haxx.se/download.html上找到它们并解压缩。然后将它们添加到PATH变量中,并尝试再次运行cUrl命令。
xoefb8l84#
您可以使用一些json解析器来读取流,例如Gson: