程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> Winform完成挪用asp.net數據接話柄例

Winform完成挪用asp.net數據接話柄例

編輯:C#入門知識

Winform完成挪用asp.net數據接話柄例。本站提示廣大學習愛好者:(Winform完成挪用asp.net數據接話柄例)文章只能為提供參考,不一定能成為您想要的結果。以下是Winform完成挪用asp.net數據接話柄例正文


本文實例講述了Winform完成挪用asp.net數據接口的辦法,分享給年夜家供年夜家參考。詳細完成辦法以下:

1、成績:

比來一個WPF項目須要改寫成android項目,思緒是在asp.net項目中編寫一個通用接口,便於其它平台下挪用數據。剛接觸到這些器械的時刻完整是一頭霧水,最基本的緣由是不明確網站中的一個網頁,為何其它項目便可以拜訪它,並獲得數據。帶著疑問在asp.net項目編寫一個簡略的數據接口,並新建一個小winform項目直接拜訪它。

2、處理辦法:

在asp.net項目中編寫一個數據接口,應用反射鑒別呼應的辦法;和獲得接口的數據。

這裡僅僅是引見若何應用它們,而不講述應用它們的根本道理,感興致的同伙可以在查閱相干材料的基本上做進一步的研討。

3、重要內容:

1、asp.net項面前目今編寫數據接口

2、應用反射分辯挪用辦法

3、新建一個winform項目測試接口的准確性

現分述以下:

1、在asp.net項面前目今編寫一簡略接口

編寫一個辦法,結構一個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、應用反射拔取挪用辦法

假定在aspx頁面中有許多辦法,而在應用進程中常常僅須要挪用個中的某一個辦法,此處用反射拔取挪用辦法。

反射進程中應用的常量:

private const string PAGE_PATH_INFO = "/AppDataInterface/ExamLogin.aspx";//頁面
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項目,拜訪asp.net中數據接口

宣布asp.net項目,網址:http://192.168.4.22:8005

1)無需向數據接口授遞數據:

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);
}

獲得的數據是:{"UName":"8","Password":"9"}

2)以post方法向數據接口授遞數據,獲得接口數據

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);
}

獲得的數據:{"UName":"7","Password":"9"}

4、總結

依照上述引見的一些辦法可以完成項目,對此感興致的同伙可以著手理論一下,信任會有新的收成!願望本文所述對年夜家的C#法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved