標籤:container 技術 types ref bre property ade 建立 encoding
自從過上程式員的生活,身邊總是或多或少的提及一些API(應用程式介面),網上各種入門教程、執行個體大把大把,有的只是貼上部分代碼,也不給注釋, 寫Demo的時候連編譯都無法通過。下面我從小白開始來介紹下調用手機API的詳細步驟
1. 準備工作,查閱相關介面資訊,部分商業的時收費的
介面地址 http://sj.apidata.cn/請求參數
| 參數名 |
參數說明 |
| mobile |
要查詢的手機號碼。 |
| callback |
需要JSONP格式的返回資料時需要指定callback。 |
請求樣本 http://sj.apidata.cn/?mobile=13488888888返回欄位
| 欄位名 |
欄位類型 |
欄位說明 |
| status |
integer |
介面請求狀態:0=請求失敗,1=請求成功 |
| data |
object |
返回的結果資料對象 |
| message |
string |
返回的訊息,請求失敗時返回失敗原因 |
data節點欄位說明:
| 欄位名 |
欄位類型 |
欄位說明 |
| prefix |
integer |
手機號碼號段。 |
| mobile |
string |
查詢的手機號碼 |
| province |
string |
歸屬地省份名稱。 |
| city |
string |
歸屬地城市名稱 |
| isp |
string |
歸屬的電訊廠商名稱 |
| code |
integer |
歸屬地行政編號 |
| zipcode |
integer |
歸屬地郵遞區號 |
| types |
string |
手機號碼卡資訊 |
返回樣本{
"status": 1, "data": { "prefix": 138, "province": "雲南", "city": "昆明", "isp": "移動", "code": 871, "zipcode": 650500, "types": "中國移動 GSM", "mobile": "13888888888" }, "message":"success"}
2.發送請求,處理返回結果
private void GetNumInform(string num) { string url = "http://sj.apidata.cn/?mobile=" + num; //請求數據 HttpWebRequest res = (HttpWebRequest)WebRequest.Create(url); //方法名 res.Method = "GET"; //獲取餉應數據 HttpWebResponse resp = (HttpWebResponse)res.GetResponse(); //讀取數據流 StreamReader sr = new StreamReader(resp.GetResponseStream(),Encoding.UTF8); //編譯成字串 string resphtml = sr.ReadToEnd(); #region Demo1 //獲取Json數據對象 NumDes numdes = JsonConvert.DeserializeObject<NumDes>(resphtml); string city = numdes.data["city"].ToString(); string isp = numdes.data["isp"].ToString(); #endregion #region Demo2 JObject numdbers = JObject.Parse(resphtml); string c = numdbers["data"]["city"].ToString(); #endregion TextBox2.Text = city + isp; }
3. 調用序列化庫,否則無法識別JObject、JsonConvert 對象,VS內建的有Nuget包,裡面有我們需要的Newtonsoft包,只需要安裝就可以
依次開啟: 工具-Nuget封裝管理員-封裝管理員控制台
輸入: Install-Package Newtonsoft.json
如果提示安裝失敗,或者版本不一致,需要Nuget升級到最新版本,則在依舊在管理列表中先卸載Nuget包,然後在重新安裝便是最新版本
4. 對於上面Demo1 的numdes 對象,需要建立一個實體類,建立與介面網站傳回值對應的屬性,在http://sj.apidata.cn/中,返回的欄位為:stasus、data、message,所以在建立的類中寫入對應的成員欄位,如下
public class NumDes { public int status { get; set; } public Dictionary<string,string> data { get; set; } public string message { get; set; } }
5.啟動程式,得到返回的城市、電訊廠商
從零開始調用一個手機號歸屬地查詢API