国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Winform項(xiàng)目調(diào)用asp.net數(shù)據(jù)接口

2019-11-14 16:24:27
字體:
供稿:網(wǎng)友

  最近一個(gè)WPF項(xiàng)目需要改寫成android項(xiàng)目,思路是在asp.net項(xiàng)目中編寫一個(gè)通用接口,便于其它平臺(tái)下調(diào)用數(shù)據(jù)。剛接觸到這些東西的時(shí)候完全是一頭霧水,最根本的原因是不明白網(wǎng)站中的一個(gè)網(wǎng)頁(yè),為什么其它項(xiàng)目就可以訪問它,并獲取數(shù)據(jù)。帶著疑問在asp.net項(xiàng)目編寫一個(gè)簡(jiǎn)單的數(shù)據(jù)接口,并新建一個(gè)小winform項(xiàng)目直接訪問它。本文涉及到的知識(shí)點(diǎn)有:在asp.net項(xiàng)目中如何編寫一個(gè)數(shù)據(jù)接口;使用反射辨別響應(yīng)的方法;以及如何獲取接口的數(shù)據(jù)。這里僅僅是介紹如何使用它們,而不講述使用它們的基本原理,一是本人道行淺薄對(duì)基本原理不了解,害怕隨便書寫誤導(dǎo)后人;二是如果闡述其基本原理,勢(shì)必需要花費(fèi)大量時(shí)間,奈何時(shí)間有限。將來如果上述兩個(gè)條件滿足,必會(huì)在最下面做出論述,因?yàn)檫@對(duì)自己的進(jìn)步也是一個(gè)肯定。閑話少說,開始正文。

  主要內(nèi)容:

  1、asp.net項(xiàng)目下編寫數(shù)據(jù)接口

  2、使用反射分辨調(diào)用方法

  3、新建一個(gè)winform項(xiàng)目測(cè)試接口的正確性

 

1、在asp.net項(xiàng)目下編寫一簡(jiǎn)單接口

編寫一個(gè)方法,構(gòu)造一個(gè)json字符串Response即可。

PRivate void ExamInfoLogin()        {            string aa = "8";            string bb = "9";            string roomName = Request.Form["RoomName"];            if (roomName == "806")            {                aa = "7";            }                                   StringBuilder jsonStringBuilder = new StringBuilder();            jsonStringBuilder.Append("{");            jsonStringBuilder.Append("/"UName/":/"").Append(aa).Append("/",");            jsonStringBuilder.Append("/"PassWord/":/"").Append(bb).Append("/"");            jsonStringBuilder.Append("}");            Response.Write(jsonStringBuilder.ToString());        }

 

2、使用反射選取調(diào)用方法

假設(shè)在aspx頁(yè)面中有很多方法,而在使用過程中往往僅需要調(diào)用其中的某一個(gè)方法,此處用反射選取調(diào)用方法。

反射過程中使用的常量:

private const string PAGE_PATH_INFO = "/AppDataInterface/ExamLogin.aspx";//頁(yè)面        private const string ASSEMBLY_NAME = "OSCEWEB";//程序集        private const string CLASS_NAME = "OSCEWEB.AppDataInterface.ExamLogin";//類名

 

重寫OnInit方法:

protected override void OnInit(EventArgs e)        {            string pathInfo = Request.Params["PATH_INFO"];            if (pathInfo.StartsWith(PAGE_PATH_INFO + "/"))            {                string[] nameList = pathInfo.Substring(PAGE_PATH_INFO.Length + 1).Split('/');                if (nameList.Length < 1)                {                    Response.End();                    return;                }                try                {                    Assembly assembly = Assembly.Load(ASSEMBLY_NAME);                    Type type = assembly.GetType(CLASS_NAME);                    MethodInfo method = type.GetMethod(nameList[0], System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);                    method.Invoke(this, null);                }                catch (Exception ex)                {                    Response.End();                    return;                }            }        }

 

在Page_Load方法中添加:

if (Request.Params["PATH_INFO"].StartsWith(PAGE_PATH_INFO + "/"))            {                Response.End();            }

 

3、新建一Winform項(xiàng)目,訪問asp.net中數(shù)據(jù)接口

發(fā)布asp.net項(xiàng)目,網(wǎng)址:http://192.168.4.22:8005

1)無需向數(shù)據(jù)接口傳遞數(shù)據(jù):

private void button1_Click(object sender, EventArgs e)        {            string strURL = "http://192.168.4.22:8005/AppDataInterface/ExamLogin.aspx/ExamInfoLogin";            request = (System.Net.HttpWebRequest)WebRequest.Create(strURL);            response = (System .Net.HttpWebResponse )request .GetResponse ();            System.IO.StreamReader streamReader = new System.IO.StreamReader(response.GetResponseStream(), Encoding.UTF8);            string responseText = streamReader.ReadToEnd();            streamReader.Close();            MessageBox.Show(responseText);        }

得到的數(shù)據(jù)是:{"UName":"8","Password":"9"}

 

2)以post方式向數(shù)據(jù)接口傳遞數(shù)據(jù),獲取接口數(shù)據(jù)

private void button2_Click(object sender, EventArgs e)        {            string strURL = "http://192.168.4.22:8005/AppDataInterface/ExamLogin.aspx/ExamInfoLogin";            request = (System.Net.HttpWebRequest)WebRequest.Create(strURL);            request.Method = "POST";            request.ContentType = "application/x-www-form-urlencoded";            string param = "RoomName=806";            ASCIIEncoding encoding = new ASCIIEncoding ();            byte[] data = encoding.GetBytes(param);            request.ContentLength = data.Length;            System.IO.Stream stream = request.GetRequestStream();            stream.Write(data, 0, data.Length);            stream.Close();            response = (System.Net.HttpWebResponse)request.GetResponse();            System.IO.StreamReader streamReader = new System.IO.StreamReader(response.GetResponseStream(), Encoding.UTF8);            string responseText = streamReader.ReadToEnd();            streamReader.Close();            MessageBox.Show(responseText);        }

得到的數(shù)據(jù):{"UName":"7","Password":"9"}

 

4、總結(jié)

  按照上述介紹的一些方法確實(shí)能完成項(xiàng)目,但是對(duì)其為什么該如此還是充滿疑惑,總感覺心中無底、戰(zhàn)戰(zhàn)兢兢,希望有高手可以對(duì)小弟指點(diǎn)一二,不勝感激。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 鄯善县| 清徐县| 苏尼特右旗| 建瓯市| 武功县| 雅江县| 休宁县| 盱眙县| 白水县| 通城县| 兴城市| 中牟县| 海林市| 马尔康县| 府谷县| 芮城县| 五河县| 石首市| 桂东县| 安陆市| 禹城市| 平和县| 铁力市| 开封县| 聂拉木县| 溆浦县| 桂平市| 巢湖市| 安顺市| 赫章县| 贵阳市| 临沧市| 新乐市| 彩票| 疏附县| 石河子市| 德州市| 高陵县| 龙胜| 济南市| 且末县|