首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中运行bash

在Java中运行bash
EN

Stack Overflow用户
提问于 2022-09-19 13:59:09
回答 1查看 36关注 0票数 0

我试图运行一个bash,它使用我的api键从google获取信息。我在终端中运行代码,得到我想要的输出(仅是地址)。但是当我尝试在java中使用这个调用时,它就不起作用了。我相信这最终是个无效的决定。

该cmd如下:"wget -O- -q "https://maps.google.com/maps/api/geocode/json?address=4-chōme-2-8 Shibakōen,Minato市,东京105-0011,Japan&key=MY_API_KEY“{##**$$}\x{e76f}\x{e76f}{##**$$}‘\x{e76f}\x{e76f}{##**$$}{##**$$}’\x{e76f}\x{e76f}{##**$$}

这是我当前的java代码。

代码语言:javascript
复制
public static void main(String[] args) throws Exception {
    Process runtime = Runtime.getRuntime().exec("wget -O- -q \"https://maps.google.com/maps/api/geocode/json?address=4-chōme-2-8 Shibakōen, Minato City, Tokyo 105-0011, Japan&key=[MY_API_KEY]\"|grep '\"formatted_address\"'|cut -d\\: -f2");
    Show_Output(runtime);
}
public static void Show_Output(Process process) throws IOException {
    BufferedReader output_reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
    String output = "";
    while ((output = output_reader.readLine()) != null) {
        System.out.println(output);
    }
    System.out.println(output);
}

预期产量为:"4-chōme-2-8 Shibakōen,Minato市,东京105-0011,日本“,

EN

回答 1

Stack Overflow用户

发布于 2022-09-19 14:06:11

使用Process类,您只能执行一个命令。另一方面,你有三个:

我看到4种选择:

  1. 创建包含这些命令的shell脚本,并执行
  2. 创建3个进程(每个命令一个),并链接它们的输入/输出流。
  3. 只对curl命令使用一个进程,并在Java中执行grep和cut
  4. 完全跳过使用命令,只需在整个过程中使用Java

我个人倾向于选择4,使用Java自己的HttpClient,这应该是非常直接的。

  • 使用HttpClient作为字符串获取响应
  • 使用response.lines()获取行流
  • 使用filter替换grep (.filter(line -> line.contains("...")))
  • 使用字符串操作替换cut
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73774587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档