1

iOSアプリでグローバルIPアドレスを取得する必要があります。

検索しましたが、グローバルIPアドレスの取得に関する投稿が見つかりませんでした。それらのほとんどはローカルIPアドレスを取得するためのものでした。

私はこのコードを試しました:iPhoneのIPアドレスを見つける方法。ただし、これはローカルIPアドレスを返します。

私のアプリでは、次のWebサイトに示されているIPアドレスを取得する必要があります。

http://myipaddress.com/show-my-ip-address/および http://whatismyipaddress.com/

プログラムでiOSアプリのグローバルIPアドレスを取得することは可能ですか?1つのオプションは、上記のようなWebサービスを使用することですが、これらのWebサイトからの応答はHTMLになります。単純なJSONまたはXMLを返す無料のWebサービスはありますか?

4

2 に答える 2

6

**編集06/29/16: **古いAPIが機能しなくなったため、APIのURLを更新しました。

次を使用できます:https ://api.ipify.org/?format = text

プレーンな文字列です。responseObjectを取得して、アプリに保存して使用できます。AFNetworkingをお勧めします。これは単純な呼び出しと戻りであり、JSONやxmlは必要ありません。

NSURL *URL = [NSURL URLWithString:@"http://api-sth01.exip.org/"];
NSString *URLPath = @"?call=ip";

// Start Connection
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:URL];
[httpClient setDefaultHeader:@"Accept" value:@"application/json"];
NSMutableURLRequest *request = [httpClient requestWithMethod:@"GET" path:URLPath parameters:nil];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:request];
[operation  setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

    // SAVE responseObject to your app

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

    // Failed
    NSLog(@"error: %@",  operation.responseString);

}];

[operation start];

ただし、JSONが必要な場合は、https ://api.ipify.org/?format=jsonを使用できます。

于 2012-12-09T14:49:32.007 に答える
0

いいえ-コードを厳密に使用して外部(グローバル)IPアドレスをプログラムで取得することはできません。サービスを使用して外部IPを表示することに関して、私はあなたが何を避けているのかを調べます。あなたが言及した2つのサイトまたはCheckIPから返されたHTMLを解析またはスクレイピングします。

[NSData dataWithContentsOfURL:url]

CheckIPが返すものの例を以下に示します。これは非常に単純で、RegExを使用して簡単に取得できます。

<html>
 <head>
  <title>
   Current IP Check
  </title>
 </head>
 <body>
  Current IP Address: 108.66.182.170
 </body>
</html>

編集:@gmogamesの回答からのURLを使用して、データを文字列に変換するために必要なのは次のとおりです。

NSURL *theURL = [[NSURL alloc] initWithString:@"http://api-sth01.exip.org/?call=ip"];
NSString* myIP = [[NSString alloc] initWithData:[NSData dataWithContentsOfURL:theURL]
                                     encoding:NSUTF8StringEncoding];
于 2012-12-09T14:47:50.617 に答える