LINUX.ORG.RU

Как получить нужную строку в строке?

 


1

1
HTTP/1.1 200 OK
CACHE-CONTROL: max-age=120
ST: upnp:rootdevice
USN: uuid:feb550f8-4489-42cd-add0-7fbdbd2c937b::upnp:rootdevice
EXT:
SERVER: AsusWRT/3.0.0.4 UPnP/1.1 MiniUPnPd/1.9
LOCATION: http://192.168.1.1:44641/rootDesc.xml
OPT: "http://schemas.upnp.org/upnp/1/0/"; ns=01
01-NLS: 1
BOOTID.UPNP.ORG: 1
CONFIGID.UPNP.ORG: 1337

Вот например пришла эта строка. Как мне сравнить HTTP/1.1 200 OK? Как мне получить строку LOCATION? Как получить из этой строки адрес и порт?

Ты что, дурак? Зачем тебе внешний ресурс, если сетевушка роутера и так знает свой ip?

anonymous
()

Вангую, что проблема решается вовсе не эта.

anonymous
()
Ответ на: комментарий от anonymous

Так это данные от роутера. Ещё один запрос и будет получен от роутера ответ в виде внешнего ip.

u0atgKIRznY5
() автор топика
Ответ на: комментарий от newb

А как пользоваться? А то я тут понаписал

indexOf
substring
indexOf
substring

u0atgKIRznY5
() автор топика

        String str = "" +
                "HTTP/1.1 200 OK\r\n" +
                "CACHE-CONTROL: max-age=120\r\n" +
                "ST: upnp:rootdevice\r\n" +
                "USN: uuid:feb550f8-4489-42cd-add0-7fbdbd2c937b::upnp:rootdevice\r\n" +
                "EXT:\r\n" +
                "SERVER: AsusWRT/3.0.0.4 UPnP/1.1 MiniUPnPd/1.9\r\n" +
                "LOCATION: http://192.168.1.1:44641/rootDesc.xml\r\n" +
                "OPT: \"http://schemas.upnp.org/upnp/1/0/\"; ns=01\r\n" +
                "01-NLS: 1\r\n" +
                "BOOTID.UPNP.ORG: 1\r\n" +
                "CONFIGID.UPNP.ORG: 1337\r\n";
        String[] lines = str.split("\r\n");
        System.out.println("200 ok: " + lines[0].equals("HTTP/1.1 200 OK"));
        Map<String, String> headers = new HashMap<>();
        for (int i = 1; i < lines.length; i++) {
            String line = lines[i];
            int colonIndex = line.indexOf(':');
            if (colonIndex == -1) {
                continue;
            }
            String name = line.substring(0, colonIndex).trim();
            String value = line.substring(colonIndex + 1).trim();
            headers.put(name.toLowerCase(), value);
        }

        String locationStr = headers.get("location");
        System.out.println("location: " + locationStr);
        URI locationURI = URI.create(locationStr);
        String locationHost = locationURI.getHost();
        int locationPort = locationURI.getPort();
        System.out.println("host: " + locationHost + "; port: " + locationPort);
Legioner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.