如何獲取Public IP

之前一朋友問如何獲取Public IP述吸,并沒有發(fā)現(xiàn)很好的方法剩彬,直到看到一文章(文章在這兒),才突然恍然大迷瞪阿纤,本地獲取Public IP或許并不是特別方便凳厢,但是在我們給后臺服務(wù)器發(fā)送請求時(shí)雾叭,后臺確是很容易可以獲取到Public IP的悟耘。因?yàn)樯掀恼率褂玫腁FNetworking的3.0之前的版本且依賴于AFNetworking,所以打算將其抽離重新總結(jié)一下织狐。

如果還想了解一下獲取局域網(wǎng)IP的方法暂幼,之前在這里總結(jié)過

注意:這里使用還是HTTP的接口,在iOS9之后默認(rèn)是只支持HTTPS的移迫,所以看之前的《iOS9總結(jié)》解決

使用NSURLSession來獲取數(shù)據(jù)旺嬉,還是借用上篇文章中的地址(用人家的東西要說一聲),在stackoverflow尋找解決方案時(shí)有幾個(gè)地址厨埋,但是畢竟有偉大的防火墻的存在邪媳,所以還是用這個(gè)國內(nèi)的地址比較靠譜,當(dāng)然最好還是自己后臺實(shí)現(xiàn)荡陷。
最直接的方式 show you the code

/*!
 *  @author JYFang
 *
 *  @brief 獲取Public IP及其附加信息
 *
 *  @param withInfo 是否需要IP的附加信息雨效,YES,則返回废赞,NO徽龟,則只返回IP
 *  @param completionBlock 返回信息的回調(diào)
 */
+ (void)requestPublicIPWithInfo:(BOOL)withInfo completionBlock:(void(^)(NSString * _Nullable publicIP, NSDictionary * _Nullable info, NSError * _Nullable error))completionBlock
{

    [[[NSURLSession sharedSession]dataTaskWithURL:[NSURL URLWithString:@"http://ip.taobao.com/service/getIpInfo.php?ip=myip"] completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        if (error) {
            completionBlock(nil,nil,error);
            return ;
        }
        NSDictionary *dataDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];
        if (error) {
            completionBlock(nil,nil,error);
            return;
        }
    
        NSInteger code = [dataDict[@"code"]integerValue];
        NSAssert(code == 0, @"The service response is wrong");
    
        NSDictionary *info = dataDict[@"data"];
        NSString *publicIp = info[@"ip"];
        if (withInfo) {
            completionBlock(publicIp,info,nil);
        }else{
            completionBlock(publicIp,nil,nil);
        }       
    }]resume];
}

使用時(shí)將其放到工具類中然后調(diào)用就可以了

[Util requestPublicIPWithInfo:YES completionBlock:^(NSString * _Nullable publicIP, NSDictionary * _Nullable info, NSError * _Nullable error) {
    if (error) {
        NSLog(@"error = %@",[error description]);
        return ;
    }
    NSLog(@"IP = %@ ,info = %@",publicIP,info);
}];

還有其他的一些處理方式,在stackoverflow上唉地,可以看這兒据悔,還有這兒

最后,代碼片段放到Github上這兒

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末耘沼,一起剝皮案震驚了整個(gè)濱河市极颓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌耕拷,老刑警劉巖讼昆,帶你破解...
    沈念sama閱讀 212,686評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異骚烧,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)闰围,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,668評論 3 385
  • 文/潘曉璐 我一進(jìn)店門赃绊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人羡榴,你說我怎么就攤上這事碧查。” “怎么了?”我有些...
    開封第一講書人閱讀 158,160評論 0 348
  • 文/不壞的土叔 我叫張陵忠售,是天一觀的道長传惠。 經(jīng)常有香客問我,道長稻扬,這世上最難降的妖魔是什么卦方? 我笑而不...
    開封第一講書人閱讀 56,736評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮泰佳,結(jié)果婚禮上盼砍,老公的妹妹穿的比我還像新娘。我一直安慰自己逝她,他們只是感情好浇坐,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,847評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著黔宛,像睡著了一般近刘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上臀晃,一...
    開封第一講書人閱讀 50,043評論 1 291
  • 那天跌宛,我揣著相機(jī)與錄音,去河邊找鬼积仗。 笑死疆拘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的寂曹。 我是一名探鬼主播哎迄,決...
    沈念sama閱讀 39,129評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼隆圆!你這毒婦竟也來了漱挚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,872評論 0 268
  • 序言:老撾萬榮一對情侶失蹤渺氧,失蹤者是張志新(化名)和其女友劉穎旨涝,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體侣背,經(jīng)...
    沈念sama閱讀 44,318評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡白华,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,645評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贩耐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弧腥。...
    茶點(diǎn)故事閱讀 38,777評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖潮太,靈堂內(nèi)的尸體忽然破棺而出管搪,到底是詐尸還是另有隱情虾攻,我是刑警寧澤,帶...
    沈念sama閱讀 34,470評論 4 333
  • 正文 年R本政府宣布更鲁,位于F島的核電站霎箍,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏澡为。R本人自食惡果不足惜漂坏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,126評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望缀壤。 院中可真熱鬧樊拓,春花似錦、人聲如沸塘慕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,861評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽图呢。三九已至条篷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蛤织,已是汗流浹背赴叹。 一陣腳步聲響...
    開封第一講書人閱讀 32,095評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留指蚜,地道東北人乞巧。 一個(gè)月前我還...
    沈念sama閱讀 46,589評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像摊鸡,于是被迫代替她去往敵國和親绽媒。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,687評論 2 351

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理免猾,服務(wù)發(fā)現(xiàn)是辕,斷路器,智...
    卡卡羅2017閱讀 134,637評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,858評論 25 707
  • 名詞延伸 通俗的說疙教,域名就相當(dāng)于一個(gè)家庭的門牌號碼,別人通過這個(gè)號碼可以很容易的找到你蚓炬。如果把IP地址比作一間房子...
    楊大蝦閱讀 20,592評論 2 57
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,135評論 30 470
  • 直接調(diào)用即可.h .m
    EnjoyWT閱讀 102評論 0 0