ios 獲取外網(wǎng)ip

今天在網(wǎng)上找了一個獲取外網(wǎng)地址的方法無奈,Data的initcontentsOfURL一直不好使,然后查詢了一些資料得到了一個能使用的方法。下面貼代碼。

/// 獲取外網(wǎng)ip

///

/// - Returns: 外網(wǎng)ip

func getIpinfo() ->String?

{

/** 這是ip查詢網(wǎng)址 */

let urlStr = "http://ip.taobao.com/service/getIpInfo.php?ip=myip"

/** 編碼為下面轉(zhuǎn)換數(shù)據(jù)做準備 */

let strEncoding = urlStr.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)

if strEncoding != nil {

do{

let data = try Data.init(contentsOf: URL.init(string: strEncoding!)!)

do

{

/** 解析data */

if let resultDic = try JSONSerialization.jsonObject(with: data, options: .mutableLeaves) as? [String:Any]

{

/** 打印結果 這邊數(shù)據(jù)比較多類似以下數(shù)據(jù) */

/** {

code = 0;

data =? ? {

area = "\U534e\U4e1c";

"area_id" = 300000;

city = "\U4e0a\U6d77\U5e02";

"city_id" = 310100;

country = "\U4e2d\U56fd";

"country_id" = CN;

county = "";

"county_id" = "-1";

ip = "139.226.164.200";

isp = "\U8054\U901a";

"isp_id" = 100026;

region = "\U4e0a\U6d77\U5e02";

"region_id" = 310000;

};

} */

print(resultDic)

/** 用guard邏輯稍微清晰點? */

guard let resultCode = resultDic["code"] as? Int? else

{

print("data error")

return nil;

}

guard resultCode == 0 else

{

print("code error")

return nil

}

guard let dataDic = resultDic["data"] as? [String:Any] else

{

print("dic info error")

return nil;

}

guard let ip = dataDic["ip"] as? String else

{

print("ip error")

return nil;

}

/** 得到最終結果 */

return ip

}

}

catch

{

print(error.localizedDescription)

}

}

catch

{

print(error.localizedDescription)

}

}

return nil

}

比較喜歡swift的機制把不確定因素在代碼界面排除支持swift

忘了補充下 記得在info.plist文件中加http傳輸協(xié)議許可

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 首推方法1:淘寶的接口http://ip.taobao.com/service/getIpInfo.php, 獲...
    MdWhat閱讀 5,212評論 2 2
  • 概覽 緩存組件應該說是每個客戶端程序必備的核心組件,試想對于每個界面的訪問都必須重新請求勢必降低用戶體驗。但是如何...
    默默_David閱讀 2,047評論 1 9
  • Swift 介紹 簡介 Swift 語言由蘋果公司在 2014 年推出,用來撰寫 OS X 和 iOS 應用程序 ...
    大L君閱讀 3,425評論 3 25
  • 1、隨機數(shù) 不需要隨機數(shù)種子 arc4random()%N + begin:產(chǎn)生begin~begin+N的隨機數(shù)...
    我是小胡胡123閱讀 4,407評論 0 2
  • 卷首語:讓我們變得更有意思 大尾鱸鰻 大尾鱸鰻 (2013) 看見臺灣 看見臺灣 (2013) 二十部編年史:一種...
    DekaiXu閱讀 510評論 0 1

友情鏈接更多精彩內(nèi)容