Получение результата работы PHP скрипта

136
16 июля 2019, 08:40

Доброй ночи. Я написал PHP скрипт, который выводит данные в формате "0.0 0.0 name" (где 0.0 - координаты X и Y соответственно, а name - название). Это координаты архитектурных объектов, на которые мне нужно переключить рандомно первоначальное положение Google Maps. Скрипт работает отлично: он все выводит правильно, если перейти напрямую по ссылке его расположения. Однако мой код в Android Studio не принимает эти данные. Подскажите, пожалуйста, в чем может быть проблема:

public class GetMapPlace extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}
public String getMapPlace() {
    String line = "0.0 0.0 none";
    try {
        URL url = new URL(URL_GET_MAP); // подключаемся к интернету
        URLConnection connect = url.openConnection();
        connect.setDoOutput(true);
        BufferedReader reader = new BufferedReader(new InputStreamReader(connect.getInputStream())); // включаем буфер стандартного вывода, занося все в него (echo)
        StringBuilder builder = new StringBuilder();
        if (reader.readLine() != null) {
            builder.append(line); // получаем строку
        }
        Log.d("DEBUG", "ОТВЕТ" + line); // эта строка не отображается в логах
    }
    catch (Exception e) {
        e.printStackTrace();
    }
    return line;
} }

Помимо отсутствия строки DEBUG в логах, я пробовал вывести вручную значение line: оно всегда равно "0.0 0.0 none".

Вот как я в дальнейшем использую эти данные:

            GetMapPlace activity = new GetMapPlace();
            try {
                String line = activity.getMapPlace();
                Log.d("DEBUG", "ERROR123" + " " + line);
                String[] words = line.split(" ");
                position1 = Float.parseFloat(words[0]);
                position2 = Float.parseFloat(words[1]);
                name = words[3];
            }
            catch (Exception e) {
                e.printStackTrace();
            }
            // For dropping a marker at a point on the Map
            LatLng sydney = new LatLng(position1, position2);
            googleMap.addMarker(new MarkerOptions().position(sydney).title(name).snippet("Marker Description"));
            // For zooming automatically to the location of the marker
            CameraPosition cameraPosition = new CameraPosition.Builder().target(sydney).zoom(12).build();
            googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

Буду рад любой помощи! С новым годом, господа!

Answer 1

Если я правильно понимаю, то у вас line инициализируется один раз в начале функции (String line = "0.0 0.0 none";) и впоследствии не изменяется. Видимо, надо сделать как-то так:

if ((line = reader.readLine()) != null) {
    builder.append(line); // получаем строку
}
...
return builder.toString();

Ну а по поводу отсутствия DEBUG в логах - надо смотреть настройки логгера (вообще какой-либо debug попадает в логи?)

Answer 2

Если я вас правильно понял, вы хотите взять часть кода из страницы в интернете. Для этого вам нужно подключить библиотеку jsoup.jar и потом вам нужно написать примерно такой код:

try {
        Document doc = Jsoup.connect("https://ru.stackoverflow.com").get();
        Elements element = doc.select("head");
        String str = "";
        for (org.jsoup.nodes.Element el : element) {
            parm = el.attr("title");
        }
}catch(MalformedURLException e){
 Log.d("Veb", "doInBackground: error 1");
}

И еще не забудьте всю эту открыть в новом потоке.

READ ALSO
Ip multiaccount checker PHP (Нахождение дубликатов пользователей по IP)

Ip multiaccount checker PHP (Нахождение дубликатов пользователей по IP)

Подскажите, пожалуйста, Есть таблица Access-Log пользователей, вида "User ID" "IP" "Date"Возможно ли найти все дубликаты-мультиаккаунты в ней без огромной...

121
C++ Как сравнить два массива типа char?

C++ Как сравнить два массива типа char?

Нужно ввести группуДалее перебрать структура, найти запись с совпадающей группой и вывести её

135
Ошибка с OpenAL. no saved enable hardware sample rate converter preference found

Ошибка с OpenAL. no saved enable hardware sample rate converter preference found

Работаю на Mac, использую XcodeЯ решил попробовать поработать с библиотекой alut

204