从java应用程序执行Lynx
我想为我的服务器开发一个java应用程序,但我需要对网站API(Twitch)进行身份验证。要做到这一点,我需要通过网页连接到一个帐户,所以我想使用Lynx这样做。但是,当我尝试从java应用程序启动Lynx时,程序挂起,什么也不做:从java应用程序执行Lynx,java,linux,runtime,lynx,Java,Linux,Runtime,Lynx,我想为我的服务器开发一个java应用程序,但我需要对网站API(Twitch)进行身份验证。要做到这一点,我需要通过网页连接到一个帐户,所以我想使用Lynx这样做。但是,当我尝试从java应用程序启动Lynx时,程序挂起,什么也不做: Runtime rt = Runtime.getRuntime(); try{ if (os.contains("win")) { // this doesn't support sho
Runtime rt = Runtime.getRuntime();
try{
if (os.contains("win")) {
// this doesn't support showing urls in the form of "page.html#nameLink"
rt.exec( "rundll32 url.dll,FileProtocolHandler " + url);
} else if (os.contains("mac")) {
rt.exec( "open " + url);
} else if (os.contains("nix") || os.contains("nux")) {
// Build a command string which looks like "browser1 "url" || browser2 "url" ||..."
StringBuffer cmd = new StringBuffer();
cmd.append( "lynx" + " \"" + url + "\" ");
rt.exec(new String[] { "sh", "-c", cmd.toString() });
} else {
return;
}
}catch (Exception e){
return;
}
显然这是因为Runtime.getRuntime().exec()在某些条件下可能无法工作,但我找不到任何与Lynx工作相关的东西
服务器操作系统:Ubuntu服务器14.10运行时.exec()返回一个进程,你应该从它的stdout输出中读取并写入它的stdin(如果程序需要)
有关详细信息,请参阅本文的“为什么运行时.exec()挂起”一节
顺便说一句,目前在java中执行进程的首选方法是使用
ProcessBuilder
您可以使用java.net.URLConnection来发出请求,而不是启动外部进程吗?这可能更简单,也肯定更便于携带