Поиск телефонной компании по номеру мобильного телефона? - PullRequest
3 голосов
/ 26 сентября 2011

У меня есть приложение, в котором люди могут дать номер телефона, и оно будет отправлять SMS-сообщения на номер телефона через шлюзы EMail-SMS. Однако, чтобы это работало, мне нужна телефонная компания с указанным номером, чтобы я отправлял электронное письмо на соответствующий SMS-шлюз. Я видел некоторые сервисы, которые позволяют вам искать эту информацию, но ни один из них в виде веб-сервиса или базы данных.

Например, http://tnid.us предоставляет такую ​​услугу. Пример вывода с моего номера телефона:

enter image description here

Где они получают информацию "Текущей телефонной компании" для каждого номера. Это свободно доступная информация? Существует ли база данных или какой-либо веб-сервис, который я могу использовать, чтобы получить эту информацию для данного номера мобильного телефона?

Ответы [ 4 ]

3 голосов
/ 27 сентября 2011

То, что вам нужно, называется поиском номера HLR (Home Location Register).

В своих основных формах такие API ожидают телефонный номер в международном формате (например, +15121234567) и возвращают обратно IMSI , который включает их MCC (дает вам страна) и MNC (дает вам телефон оператора). Может даже включать текущий оператор телефона (например, чтобы сказать, находится ли телефон в роуминге). Это может не работать, если телефон в данный момент находится вне диапазона или выключен. В этих случаях, в зависимости от провайдера API, они могут дать вам кэшированный результат.

Похоже, что упомянутый вами сайт предоставляет такую ​​функциональность. Поиск в Интернете по запросу "HLR lookup API" даст вам гораздо больше результатов. У меня есть личный опыт использования CLX , и я бы порекомендовал его.

1 голос
/ 04 июля 2012

Это было бы довольно много кода, но что-то, что вы могли бы сделать прямо сейчас, самостоятельно, без API, если сайт tnid.us существует:

Почему бы не открыть IE в скрытом браузереокно с URL телефонного номера?Похоже, что URL будет иметь формат http://tnid.us/search.php?q=##########, где # представляет число.Таким образом, вам нужно текстовое поле, метка и кнопка.Я вызываю текстовое поле «txtPhoneNumber», метку «lblCarrier», и кнопка вызывает вызываемую мной функцию «OnClick».

Функция кнопки создает экземпляр IE, используя MSHtml.dll и SHDocVW.dll, ивыполняет очистку страницы HTML-кода, который находится в вашем браузере, «объект».Вы тогда анализируете это.Сначала необходимо установить сборки взаимодействия, поставляемые с Visual Studio 2005 (C: \ Program Files \ Common Files \ Merge Modules \ vs_piaredist.exe).Затем:

1> Создайте новый веб-проект в Visual Studio.NET.

2> Добавьте ссылку на SHDocVw.dll и Microsoft.mshtml.

3> В default.aspx.cs добавьте эти строки вверху:

using mshtml;
using SHDocVw;
using System.Threading;

4> Добавьте следующую функцию:

protected void executeMSIE(Object sender, EventArgs e)
{
    SHDocVw.InternetExplorer ie = new SHDocVw.InternetExplorerClass();
    object o = System.Reflection.Missing.Value;
    TextBox txtPhoneNumber = (TextBox)this.Page.FindControl("txtPhoneNumber");
    object url = "http://tnid.us/search.php?q=" + txtPhoneNumber.Text);
    StringBuilder sb = new StringBuilder();

    if (ie != null) {
        ie.Navigate2(ref url,ref o,ref o,ref o,ref o);
        ie.Visible = false;
        while(ie.Busy){Thread.Sleep(2);}
        IHTMLDocument2 d = (IHTMLDocument2) ie.Document;
        if (d != null) {
            IHTMLElementCollection all = d.all;
            string ourText = String.Empty;
            foreach (object el in all)
            {
               //find the text by checking each (string)el.Text
               if ((string)el.ToString().Contains("Current Phone Company"))
                   ourText = (string)el.ToString();
            }
         // or maybe do something like this instead of the loop above...
         // HTMLInputElement searchText = (HTMLInputElement)d.all.item("p", 0);
            int idx = 0;
            // and do a foreach on searchText to find the right "<p>"...
            foreach (string s in searchText) {
               if (s.Contains("Current Phone Company") || s.Contains("Original Phone Company")) {
                  idx = s.IndexOf("<strong>") + 8;
                  ourText = s.Substring(idx);
                  idx = ourText.IndexOf('<');
                  ourText = ourText.Substring(0, idx); 
               }
            }
            // ... then decode "ourText"
            string[] ourArray = ourText.Split(';');
            foreach (string s in ourArray) {
                char c = (char)s.Split('#')[1];
                sb.Append(c.ToString());
            }
            // sb.ToString() is now your phone company carrier....
        }
    }

    if (sb != null)
        lblCarrier.Text = sb.ToString();
    else
        lblCarrier.Text = "No MSIE?";
}

По какой-то причине я не получаю "Текущую телефонную компанию", когда я просто использую сайт tnid.us напрямую, хотя только оригинал.Таким образом, вы можете захотеть проверить код, что он возвращает, то есть

bool currentCompanyFound = false;
if (s.Contains("Current Telephone Company")) {  currentCompanyFound = true }

У меня есть проверка любого из них, выше, так что вы получите что-то обратно.Что код должен сделать, это найти область HTML между

<p class="lt">Current Telephone Company:<br /><strong>

и

</strong></p>

Я искал индекс для

<strong>

идобавление символов этого слова, чтобы добраться до начальной позиции.Я не могу вспомнить, можете ли вы использовать строки или только символы для .indexOf.Но вы понимаете суть, и вы или кто-то другой, возможно, сможете найти способ заставить его работать оттуда.

Этот текст, который вы получаете, закодирован с помощью кодов символов, поэтому вам придется конвертировать их.Я дал вам вышеупомянутый код, который должен помочь в этом ... он непроверен и полностью из моей головы, но он должен сработать или получить вас, куда вы идете.

0 голосов
/ 19 августа 2016

[ Раскрытие информации: я работаю на Twilio ]

Вы можете получить информацию о номере телефона с помощью Twilio Lookup .

Если в настоящее время вы оцениваете услуги и функциональность для поиска номера телефона, я бы предложил попробовать поиск с помощью быстрого старта .

0 голосов
/ 27 сентября 2011

Вы смотрели чуть дальше на странице результатов tnid.us?

Need API access?  Contact sales@tnID.us.
...