Adobe Air - IP для местоположения - PullRequest
1 голос
/ 19 марта 2012

Есть ли способ получить широкую позицию пользователя на основе IP-адреса?(Я создаю настольное приложение Adobe Air для пользователей ноутбуков)

1 Ответ

1 голос
/ 19 марта 2012

Только что опробовал http://www.netimpact.com/,, как будто вы искали его широкую позицию, он разместил меня в 3,7 милях от моего фактического местоположения, кажется относительно простым в использовании и может отвечать данными с разделителями, которые можно разделить с помощью разделенияМетод может также выбрать получение данных объекта в кодировке JSON, которые можно легко прочитать в объект AS3 во Flex с помощью JSON.parse ().Обязательно прочитайте часто задаваемые вопросы на их сайте, чтобы лучше понять, как они получают данные и какова их точность: они позволяют 1000 запросов на разработчика в день, если вам нужно больше, у них цена от 20 баксов в месяц.

ПРИМЕЧАНИЕ. Netimpact завершил работу и перенес пользователей на нового провайдера, KickFire .Они также расширили свое предложение, включив в него не только IP2GEO, но и IP2Company & Domain2IP.

РЕДАКТИРОВАТЬ:

Немного больше информации об этом, и некоторыеобразец кода.Таким образом, единственная проблема, с которой я сталкиваюсь в своем решении, это получение IP-адреса WAN, я думаю, вам нужно будет использовать какой-нибудь серверный сценарий для отскока внешних IP-адресов пользователей, чтобы эта работа полностью работала.Я пытался использовать NetworkInfo, но это всегда будет отчет, основанный на IP-адресах локальной сети, который не будет работать для поиска geoip.Так что это приводит меня к использованию PHP или какого-либо другого серверного скрипта для получения IP.Дальнейшее обсуждение получения IP с использованием PHP здесь: http://www.phpbuilder.com/board/showthread.php?t=10327697

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                       xmlns:s="library://ns.adobe.com/flex/spark" 
                       xmlns:mx="library://ns.adobe.com/flex/mx"
                       creationComplete="windowedapplication1_creationCompleteHandler(event)">

    <fx:Script>
        <![CDATA[
            import mx.events.FlexEvent;
            import mx.rpc.events.ResultEvent;
            import mx.rpc.http.HTTPService;

            private const MY_API_KEY:String = "PUT YOUR OWN KEY HERE";

            [Bindable]
            private var ipLookupResult:Object;

            protected function button1_clickHandler(event:MouseEvent):void
            {
                var httpService:HTTPService = new HTTPService();
                httpService.url = "http://api.geoio.com/q.php?key="+MY_API_KEY+"&qt=geoip&d=json&q=PUT_YOUR_IP_HERE";
                httpService.addEventListener(ResultEvent.RESULT, lookupResultHandler);
                httpService.send();
            }
            private function lookupResultHandler(event:ResultEvent):void
            {
                ipLookupResult = JSON.parse(event.result as String);
            }

            protected function windowedapplication1_creationCompleteHandler(event:FlexEvent):void
            {
                for each(var ni:NetworkInterface in NetworkInfo.networkInfo.findInterfaces())
                {
                    var addresses:Vector.<InterfaceAddress> = ni.addresses;
                    var userIp:String = addresses[0].address;
                    trace(userIp);
                }
            }

        ]]>
    </fx:Script>

    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <s:layout>
        <s:VerticalLayout/>
    </s:layout>
    <s:Button click="button1_clickHandler(event)" label="Look me up"/>
    <s:Form>
        <s:FormItem label="City">
            <s:Label text="{ipLookupResult[0][0]}"/>
        </s:FormItem>
        <s:FormItem label="State">
            <s:Label text="{ipLookupResult[0][1]}"/>
        </s:FormItem>
        <s:FormItem label="Country">
            <s:Label text="{ipLookupResult[0][2]}"/>
        </s:FormItem>
        <s:FormItem label="ISP">
            <s:Label text="{ipLookupResult[0][3]}"/>
        </s:FormItem>
        <s:FormItem label="Latitude">
            <s:Label text="{ipLookupResult[0][4]}"/>
        </s:FormItem>
        <s:FormItem label="Longitude">
            <s:Label text="{ipLookupResult[0][5]}"/>
        </s:FormItem>
        <s:FormItem label="Country Code">
            <s:Label text="{ipLookupResult[0][6]}"/>
        </s:FormItem>
    </s:Form>
</s:WindowedApplication>

Если у вас нет доступа к написанию собственных серверных сценариев, вы также можете обратиться к внешним службам для получения информации, я полагаюwhatismyip.com предлагает это, но не уверен насчет лицензирования / стоимости, и я знаю, что они, в частности, не хотят, чтобы вы использовали главную страницу для очистки IP (несомненно, есть некоторая бесплатная версия этой услуги, если они взимают плату).

...