Вот 1-й вариант решения такой задачи:в консоли набираю сл.:
curl "http://maps.googleapis.com/maps/api/geo ... ess=London"
получаю ответ от гугл АПИ
как мне написать простейшую программу java которая бы имитировала запуск команды curl "[url_string]"
Код: Выделить всё
import java.io.*;
import java.lang.ProcessBuilder;
public class Child {
public static void main( String[] args ) {
String cmd = "curl", parm = "http://maps.googleapis.com/maps/api/geocode/json?address=London";
// String cmd = "ls", parm = "-l";
try {
// 1-й вариант:
ProcessBuilder pb = new ProcessBuilder( cmd, parm );
// перенаправляем стандартный поток ошибок на стандартный вывод
pb.redirectErrorStream( true );
Process p = pb.start();
// 2-й вариант:
// Process p = new ProcessBuilder( cmd, parm ).start();
// 3-й вариант:
// Process p = Runtime.getRuntime().exec( cmd + " " + parm );
System.out.println( "запущен процесс: " + cmd + " " + parm + " ..." );
InputStream in = p.getInputStream();
OutputStream out = p.getOutputStream();
System.out.println( in.available() );
int ret = p.waitFor();
System.out.println( "код завершения: " + ret );
// читаем стандартный поток вывода и выводим на экран
InputStreamReader isr = new InputStreamReader( in );
BufferedReader brStdout = new BufferedReader( isr );
String line = null;
while( ( line = brStdout.readLine() ) != null ) {
System.out.println(line);
}
}
catch( IOException | InterruptedException ex ) {
System.out.println( "Error: " + ex.toString() );
}
}
}
Код: Выделить всё
[Olej@modules process]$ javac Child.java
[Olej@modules process]$ java Child
запущен процесс: ls -l ...
0
код завершения: 0
итого 56
-rwxrwxr-x. 1 Olej Olej 8604 дек 7 22:41 child
-rw-r--r--. 1 Olej Olej 4502 дек 7 21:41 Child1.java
-rw-r--r--. 1 Olej Olej 4628 дек 7 22:36 Child2.java
-rw-rw-r--. 1 Olej Olej 306 дек 7 22:41 child.c
-rw-rw-r--. 1 Olej Olej 1694 дек 7 23:23 Child.class
-rw-r--r--. 1 Olej Olej 5953 дек 7 23:23 Child.java
-rw-r--r--. 1 Olej Olej 5953 дек 7 23:22 Child.java.2
-rw-r--r--. 1 Olej Olej 192 дек 7 20:56 Makefile
Код: Выделить всё
[Olej@modules process]$ javac Child.java
[Olej@modules process]$ java Child
запущен процесс: curl http://maps.googleapis.com/maps/api/geocode/json?address=London ...
0
код завершения: 0
{
"results" : [
{
"address_components" : [
{
"long_name" : "London",
"short_name" : "London",
"types" : [ "locality", "political" ]
},
{
"long_name" : "United Kingdom",
"short_name" : "GB",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "London, UK",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 51.6723432,
"lng" : 0.148271
},
"southwest" : {
"lat" : 51.38494009999999,
"lng" : -0.3514683
}
},
"location" : {
"lat" : 51.5073509,
"lng" : -0.1277583
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 51.6723432,
"lng" : 0.148271
},
"southwest" : {
"lat" : 51.38494009999999,
"lng" : -0.3514683
}
}
},
"types" : [ "locality", "political" ]
},
{
"address_components" : [
{
"long_name" : "London",
"short_name" : "London",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Middlesex County",
"short_name" : "Middlesex County",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Ontario",
"short_name" : "ON",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Canada",
"short_name" : "CA",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "London, ON, Canada",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 43.073245,
"lng" : -81.1063879
},
"southwest" : {
"lat" : 42.824517,
"lng" : -81.390852
}
},
"location" : {
"lat" : 42.9869502,
"lng" : -81.243177
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 43.073245,
"lng" : -81.1063879
},
"southwest" : {
"lat" : 42.824517,
"lng" : -81.390852
}
}
},
"types" : [ "locality", "political" ]
},
{
"address_components" : [
{
"long_name" : "London",
"short_name" : "London",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Laurel County",
"short_name" : "Laurel County",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Kentucky",
"short_name" : "KY",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United States",
"short_name" : "US",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "London, KY, USA",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 37.1522599,
"lng" : -84.03595709999999
},
"southwest" : {
"lat" : 37.0797589,
"lng" : -84.126262
}
},
"location" : {
"lat" : 37.1289771,
"lng" : -84.08326459999999
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 37.1522599,
"lng" : -84.03595709999999
},
"southwest" : {
"lat" : 37.0797589,
"lng" : -84.126262
}
}
},
"types" : [ "locality", "political" ]
},
{
"address_components" : [
{
"long_name" : "London",
"short_name" : "London",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Madison County",
"short_name" : "Madison County",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Ohio",
"short_name" : "OH",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United States",
"short_name" : "US",
"types" : [ "country", "political" ]
},
{
"long_name" : "43140",
"short_name" : "43140",
"types" : [ "postal_code" ]
}
],
"formatted_address" : "London, OH 43140, USA",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 39.921786,
"lng" : -83.3899969
},
"southwest" : {
"lat" : 39.85928,
"lng" : -83.47892299999999
}
},
"location" : {
"lat" : 39.8864493,
"lng" : -83.4482529
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 39.921786,
"lng" : -83.3899969
},
"southwest" : {
"lat" : 39.85928,
"lng" : -83.47892299999999
}
}
},
"types" : [ "locality", "political" ]
}
],
"status" : "OK"
}