最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Winform實(shí)現(xiàn)調(diào)用asp.net數(shù)據(jù)接口實(shí)例

 更新時(shí)間:2014年10月20日 09:46:15   投稿:shichen2014  
這篇文章主要介紹了Winform實(shí)現(xiàn)調(diào)用asp.net數(shù)據(jù)接口的方法,以實(shí)例的形式講述了數(shù)據(jù)接口及反射辨別響應(yīng)的實(shí)現(xiàn)方法,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了Winform實(shí)現(xiàn)調(diào)用asp.net數(shù)據(jù)接口的方法,分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:

一、問題:

最近一個(gè)WPF項(xiàng)目需要改寫成android項(xiàng)目,思路是在asp.net項(xiàng)目中編寫一個(gè)通用接口,便于其它平臺下調(diào)用數(shù)據(jù)。剛接觸到這些東西的時(shí)候完全是一頭霧水,最根本的原因是不明白網(wǎng)站中的一個(gè)網(wǎng)頁,為什么其它項(xiàng)目就可以訪問它,并獲取數(shù)據(jù)。帶著疑問在asp.net項(xiàng)目編寫一個(gè)簡單的數(shù)據(jù)接口,并新建一個(gè)小winform項(xiàng)目直接訪問它。

二、解決方法:

在asp.net項(xiàng)目中編寫一個(gè)數(shù)據(jù)接口,使用反射辨別響應(yīng)的方法;以及獲取接口的數(shù)據(jù)。

這里僅僅是介紹如何使用它們,而不講述使用它們的基本原理,感興趣的朋友可以在查閱相關(guān)資料的基礎(chǔ)上做進(jìn)一步的研究。

三、主要內(nèi)容:

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

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

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

現(xiàn)分述如下:

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

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

復(fù)制代碼 代碼如下:
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頁面中有很多方法,而在使用過程中往往僅需要調(diào)用其中的某一個(gè)方法,此處用反射選取調(diào)用方法。

反射過程中使用的常量:

復(fù)制代碼 代碼如下:
private const string PAGE_PATH_INFO = "/AppDataInterface/ExamLogin.aspx";//頁面
private const string ASSEMBLY_NAME = "OSCEWEB";//程序集
private const string CLASS_NAME = "OSCEWEB.AppDataInterface.ExamLogin";//類名

重寫OnInit方法:

復(fù)制代碼 代碼如下:
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方法中添加:

復(fù)制代碼 代碼如下:
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ù):

復(fù)制代碼 代碼如下:
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ù)

復(fù)制代碼 代碼如下:
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é)

按照上述介紹的一些方法可以完成項(xiàng)目,對此感興趣的朋友可以動(dòng)手實(shí)踐一下,相信會(huì)有新的收獲!希望本文所述對大家的C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • C# DataSet查看返回結(jié)果集的實(shí)現(xiàn)

    C# DataSet查看返回結(jié)果集的實(shí)現(xiàn)

    這篇文章主要介紹了C# DataSet查看返回結(jié)果集的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • C#實(shí)現(xiàn)文件篩選讀取并翻譯的自動(dòng)化工具

    C#實(shí)現(xiàn)文件篩選讀取并翻譯的自動(dòng)化工具

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)文件篩選及讀取內(nèi)容,并翻譯的自動(dòng)化工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-03-03
  • 最新評論

    山阳县| 荔浦县| 新乡县| 凤翔县| 沈阳市| 崇左市| 南和县| 木兰县| 杨浦区| 江安县| 靖宇县| 耒阳市| 济宁市| 永寿县| 广元市| 隆安县| 崇义县| 抚顺市| 时尚| 额敏县| 湾仔区| 新民市| 宕昌县| 西贡区| 安化县| 康乐县| 鹰潭市| 武定县| 商水县| 司法| 中江县| 平安县| 株洲县| 萝北县| 龙山县| 扶沟县| 米林县| 雷州市| 江孜县| 双江| 宿州市|