как найти имя оператора с сайта телефона нет. страница поиска в приложении для Android? - PullRequest
0 голосов
/ 13 июня 2011

Мне нужно найти имя оператора по номеру телефона. используя этот сайт в моем приложении для Android. Запрос и анализ HTML в приложении работает нормально.

Когда я запрашиваю строку запроса из приложения:

адрес:. https://nummertjanster.pts.se/net/en/Nummerkapacitet/Enskiltnummer?&_rp/pts.SearchNumber_ndc=70&_rp/pts.SearchNumber_operator=Tele2+Sverige+AB&_rp/pts.SearchNumber_telnumber=4264128

Мне нужно указать «имя оператора», что, я думаю, странно.

Проблема в независимо от того, какой номер (ndc-telnumber) я ввожу, если указать имя оператора в строке запроса, в результате на веб-странице будет это имя оператора .

Вот некоторые цифры для проверки:
073-3355433 = Telenor Sverige AB
073-6107353 = Tele 2 Sverige AB
070-3999266 = TeliaSonera Sverige AB
073-2404070 = Glocalnet AB

Как мне найти правильное имя оператора для определенного номера?

Спасибо за любую помощь.

Ответы [ 2 ]

1 голос
/ 18 июня 2011

Существует несколько проблем с сайтом, которые мешают работе:

  1. Для работы POST требуется файл cookie.
  2. Имя оператора фактически не возвращаетсякак часть страницы, она возвращается как часть перенаправления местоположения (302).

Этот кусок кода делает то, что вы хотите (я уклонялся от работы, поэтому я на самом деле убрал его для вас): он попадает на главную страницу, извлекает / извлекает возвращенный файл cookie, публикует код города и номер на веб-сайте, а затем перехватывает заголовок Location и извлекает имя оператора.Обратите внимание, что код города не всегда 3-значный (например, для 073-3355433 вы бы сделали String operatorName = findOperator("73","3355433");.

String findOperator(String ndc, String number)
    {           
        String parameters = "action=search&ndc="+ndc+"&number="+number+"&search=S%F6k";
        HttpURLConnection httpUrlConnection = null;
        OutputStream outputStream = null;
        InputStream inputStream = null;
        int code = 0;
        String response = null;
        try {
            java.net.URI u = new java.net.URI("https://nummertjanster.pts.se/net/sv/Nummerkapacitet/Enskiltnummer");
            httpUrlConnection = (HttpURLConnection) u.toURL().openConnection();
            httpUrlConnection.setConnectTimeout(7500);
            httpUrlConnection.setReadTimeout(7500);
            httpUrlConnection.setRequestMethod("GET");
            httpUrlConnection.connect();
            String cookie = httpUrlConnection.getHeaderField("Set-Cookie");

            u = new java.net.URI("https://nummertjanster.pts.se/actionrequest/sv/Nummerkapacitet/Enskiltnummer?__ac_/pts.SearchNumber");
            httpUrlConnection = (HttpURLConnection) u.toURL().openConnection();
            httpUrlConnection.setConnectTimeout(7500);
            httpUrlConnection.setReadTimeout(7500);
            httpUrlConnection.setRequestProperty("Cookie", cookie);
            httpUrlConnection.setRequestMethod("POST");
            httpUrlConnection.setDoOutput(true);
            httpUrlConnection.connect();
            outputStream = httpUrlConnection.getOutputStream();
            outputStream.write(parameters.getBytes("UTF-8"));

            httpUrlConnection.setInstanceFollowRedirects(false);
            try {
                inputStream = httpUrlConnection.getInputStream();
            } catch (IOException e) {
                //andrologger.warn("An error occurred while POSTing to " + url, e);
            }

            code = httpUrlConnection.getResponseCode();
            response = httpUrlConnection.getHeaderField("Location");
            if(response != null){
                response = response.split("&")[2].split("=")[1];
            }
        }catch(Exception e1){
            android.util.Log.v("Configuration","Exception: "+e1.getMessage(), e1);
        } finally {
            closeQuietly(outputStream);
            closeQuietly(httpUrlConnection);
        }
        return response;
    }

Протестировал его на моем телефоне, и он работает нормально: дайте мне знать, как это работает для вас.

1 голос
/ 16 июня 2011

Это явно не работает покоя. Тебе придется найти другой путь.

Возможно, имитировать форму сообщения, которое делает страница: http://www.androidsnippets.com/executing-a-http-post-request-with-httpclient

РЕДАКТИРОВАТЬ это не работает

Довольно просто:

https://nummertjanster.pts.se/net/sv/Nummerkapacitet/Enskiltnummer?&__rp_/pts.SearchNumber_ndc=PUT_AREA_NUMBER_HERE&__rp_/pts.SearchNumber_operator=xxno_operatorxx&__rp_/pts.SearchNumber_telnumber=PUT_NUMBER_HERE

т.е.

 https://nummertjanster.pts.se/net/sv/Nummerkapacitet/Enskiltnummer?&__rp_/pts.SearchNumber_ndc=696&__rp_/pts.SearchNumber_operator=xxno_operatorxx&__rp_/pts.SearchNumber_telnumber=1788300
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...