我正在尝试调用CURL,因为我需要一种快速而肮脏的方式来忽略自签名的SSL证书,而且我无法在java中找到任何适当的快速和脏的方法。
这是我目前正在使用的功能:
public String httpRequest(String httpsUrl) {
String ret;
// all of the java based HTTP requests are **** so here is cURL to the rescue
try {
// Process curl = Runtime.getRuntime().exec("/system/bin/curl --insecure '" + httpsUrl + "'");
String cmdString[] = {"/system/bin/curl", "--insecure", httpsUrl};
Process curl = Runtime.getRuntime().exec(cmdString);
BufferedReader in = new BufferedReader(new InputStreamReader(curl.getInputStream()));
curl.waitFor();
String line = ret = in.readLine();
while ( line != null ) {
ret += line + "\n";
line = in.readLine();
}
} catch ( Exception e ) {
e.printStackTrace();
}
return ret;
}
我遇到的确切问题是它没有做任何事情。 它没有提出它不会抛出任何异常的请求,也没有输出。如果我只是运行" / system / bin / curl --help"它工作正常并返回帮助页面,如果我从Android Studio中的日志中复制日志并从终端手动运行它工作正常,但由于某种原因它只是默默地失败。
我试图请求的页面只是从nodejs脚本生成的JSON,并通过lighttpd Web服务器反向代理,这只是一个私有项目,我非常想让这个应用程序不受影响尽可能快,因为它只是项目的一小部分,也是我不熟悉的语言中的唯一一点。