无法在java中执行curl命令

时间:2016-03-08 07:30:29

标签: java curl

这是我的curl命令的代码片段,我试图在eclipse中运行:

Those

我希望得到一个json输出,如下所示:

ProcessBuilder pb = new ProcessBuilder(
                    "curl",
                    "-XPOST",
                    "curl https://login.xyz.com/v1/oauth/token -H \"Accept: application/json\" --data 'client_id=<clientId>' --data 'client_secret=<clientSecret>' --data 'redirect_uri=localhost' --data 'code=<code>' ");

pb.redirectErrorStream(true);
Process p = pb.start();

InputStream is = p.getInputStream();

BufferedReader r = new BufferedReader(new InputStreamReader(is, "UTF-8"));

String line = null;
while ((line=r.readLine()) != null) {

    System.out.println(line);
}

但是我得到了这样的输出:

{"data":
{
"sfEntityType":"Token",
"accessToken":<token>,
"expiryTime":<time in seconds>
},
"status":{"succeeded":true}
}

如何解决此问题?

2 个答案:

答案 0 :(得分:0)

为了以一种易于阅读的方式从curl获取输出,您应该使用-w标志,然后在引号中指定您需要的内容:

-w"Time spent: %{time_total} Local IP: %{local_ip} Local Port: %{local_port} Size download: %{size_download} Remote IP: %{remote_ip} Remote port: %{remote_port} Speed upload: %{speed_upload} Bps "

特别是在Linux上,您需要在预期的最后一个字符后留下一个尾随空格。

答案 1 :(得分:0)

卷曲:(1)协议&#34;卷曲https&#34; libcurl中不支持或禁用  因为您使用的卷曲包不支持https协议。只需在命令行中键入curl -V并查看列出的协议。

解决方案:

下载并安装启用了SSL的不同libcurl包。