日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

C# Winform實(shí)現(xiàn)手機(jī)號碼歸屬地查詢工具

 昵稱10504424 2013-11-18

摘要:本文介紹使用C#開發(fā)基于Winform的手機(jī)號碼歸屬地查詢工具,并提供詳細(xì)的示例代碼供參考。

一、需求描述

輸入正確的手機(jī)號碼,查詢該號碼的歸屬地和其他相關(guān)信息。

二、需求分析

1、實(shí)現(xiàn)手機(jī)號碼歸屬地查詢的方法

01、本地?cái)?shù)據(jù)庫存儲信息,查詢本地庫

02、調(diào)用WebService查詢

03、通過Http請求Get方式從服務(wù)器上獲取數(shù)據(jù)

2、方式分析:

01、采用本地?cái)?shù)據(jù)庫存儲,可以斷網(wǎng)查詢,無需付費(fèi),但信息量較大占用本地資源

02、調(diào)用WebService必須連接網(wǎng)絡(luò),不占用本地資源,但公開的WebService大多數(shù)需要付費(fèi)。

03、通過Http請求Get方式從服務(wù)器上獲取數(shù)據(jù)的方式必須連接網(wǎng)絡(luò),不占用本地資源,無需付費(fèi)。

通過以上分析,決定采用第3種方式實(shí)現(xiàn)

三、實(shí)現(xiàn)思路

尋找免費(fèi)的手機(jī)號碼歸屬地查詢網(wǎng)址

通過一番尋找和對比,決定使用“手機(jī)號碼歸屬地?cái)?shù)據(jù)庫API”這個(gè)網(wǎng)站上的查詢接口。

首頁地址:http://vip./locating/help.htm

查詢地址(返回結(jié)果頁面):http://api./Locating/query.aspx?m=手機(jī)號碼

查詢地址(返回xml數(shù)據(jù)):http://vip./locating/?m=手機(jī)號碼

經(jīng)過分析和反復(fù)試驗(yàn)發(fā)現(xiàn),查詢結(jié)果可以直接發(fā)回xml格式的數(shù)據(jù),哈哈,親,要的就是你。

有了xml數(shù)據(jù)就好辦了,通過抓取網(wǎng)頁Html代碼,用一個(gè)string變量存儲xml格式的數(shù)據(jù),然后通過分析xml數(shù)據(jù)得到手機(jī)號碼歸屬地信息。

四、實(shí)現(xiàn)方法(代碼)

復(fù)制代碼
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Xml;

namespace QueryLocating
{
    public partial class formQueryLocating : Form
    {
        //Html網(wǎng)頁代碼
        private string htmlCode = string.Empty;
        //運(yùn)營商
        private  string corp = string.Empty;
        //手機(jī)卡類型
        private  string card = string.Empty;


        public formQueryLocating()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 查詢
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnQuery_Click(object sender, EventArgs e)
        {
            if (txtm.Text.Trim().ToString() != "")
            {
                //抓取網(wǎng)頁html代碼
                htmlCode = GetStringByUrl("http://vip./locating/?m=" + txtm.Text.Trim().ToString());

                //查詢手機(jī)號碼歸屬地
                QueryLocating(htmlCode);
            }
            else
            {
                txtMobile.Text = "";
                txtProvince.Text = "";
                txtCity.Text = "";
                txtAreaCode.Text = "";
                txtPostCode.Text = "";
                txtCard.Text = "";
                MessageBox.Show("請輸入手機(jī)號碼!", "錯(cuò)誤提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

        }

        /// <summary>
        /// 查詢手機(jī)號碼歸屬地
        /// </summary>
        /// <param name="htmlCode">網(wǎng)頁Html代碼</param>
        private void QueryLocating(string htmlCode)
        {
            //創(chuàng)建Xml實(shí)例
            XmlDocument xmldoc = new XmlDocument();
            //加載Xml文檔
            xmldoc.LoadXml(htmlCode);
            //獲取Xml文檔的根元素
            XmlElement root = xmldoc.DocumentElement;

            //獲取Xml文檔的根元素下的所有子節(jié)點(diǎn)
            XmlNodeList topNode = xmldoc.DocumentElement.ChildNodes;

            //子節(jié)點(diǎn)集合
            XmlNodeList elemList;

            //遍歷根元素下所有子節(jié)點(diǎn)
            foreach (XmlElement element in topNode)
            {
                //根據(jù)節(jié)點(diǎn)名稱獲取節(jié)點(diǎn)元素值
                elemList = root.GetElementsByTagName(element.Name);

                switch (element.Name)
                {
                    //判斷手機(jī)號碼格式是否正確
                    case "QueryResult":
                        if (elemList[0].InnerText.ToString() == "False")
                            MessageBox.Show("您輸入的手機(jī)號碼格式有誤,請重新輸入!", "錯(cuò)誤提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        continue;
                    //手機(jī)號碼
                    case "Mobile":
                        txtMobile.Text = elemList[0].InnerText;
                        break;
                    //所屬省份
                    case "Province":
                        txtProvince.Text = elemList[0].InnerText;
                        break;
                    //所屬城市
                    case "City":
                        txtCity.Text = elemList[0].InnerText;
                        break;
                    //區(qū)號
                    case "AreaCode":
                        txtAreaCode.Text = elemList[0].InnerText;
                        break;
                    //郵編
                    case "PostCode":
                        txtPostCode.Text = elemList[0].InnerText;
                        break;
                    //運(yùn)營商
                    case "Corp":
                        corp = elemList[0].InnerText;
                        break;
                    //卡類型
                    case "Card":
                        card = elemList[0].InnerText;
                        //拼接字符串(運(yùn)營商+卡類型)
                        txtCard.Text = corp + card;
                        break;
                }
            }

        }

        /// <summary>
        /// 抓取網(wǎng)頁html代碼
        /// </summary>
        /// <param name="strUrl">URL</param>
        /// <returns></returns>
        private static string GetStringByUrl(string strUrl)
        {
            //與指定URL創(chuàng)建HTTP請求
            WebRequest wrt = WebRequest.Create(strUrl);
            //獲取對應(yīng)HTTP請求的響應(yīng)
            WebResponse wrse = wrt.GetResponse();
            //獲取響應(yīng)流
            Stream strM = wrse.GetResponseStream();
            //對接響應(yīng)流(以"GBK"字符集)
            StreamReader SR = new StreamReader(strM, Encoding.GetEncoding("UTF-8"));
            //獲取響應(yīng)流的全部字符串
            string strallstrm = SR.ReadToEnd();
            //關(guān)閉讀取流
            SR.Close();

            //返回網(wǎng)頁html代碼
            return strallstrm;
        }
    }
}
復(fù)制代碼

最終效果圖:

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多