Только что опробовал 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 (несомненно, есть некоторая бесплатная версия этой услуги, если они взимают плату).