本文實例講述了Winform實現調用asp.net數據接口的方法,分享給大家供大家參考。具體實現方法如下:
一、問題:
最近一個WPF項目需要改寫成android項目,思路是在asp.net項目中編寫一個通用接口,便于其它平臺下調用數據。剛接觸到這些東西的時候完全是一頭霧水,最根本的原因是不明白網站中的一個網頁,為什么其它項目就可以訪問它,并獲取數據。帶著疑問在asp.net項目編寫一個簡單的數據接口,并新建一個小winform項目直接訪問它。
二、解決方法:
在asp.net項目中編寫一個數據接口,使用反射辨別響應的方法;以及獲取接口的數據。
這里僅僅是介紹如何使用它們,而不講述使用它們的基本原理,感興趣的朋友可以在查閱相關資料的基礎上做進一步的研究。
三、主要內容:
1、asp.net項目下編寫數據接口
2、使用反射分辨調用方法
3、新建一個winform項目測試接口的正確性
現分述如下:
1、在asp.net項目下編寫一簡單接口
編寫一個方法,構造一個json字符串Response即可。代碼如下:
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頁面中有很多方法,而在使用過程中往往僅需要調用其中的某一個方法,此處用反射選取調用方法。
反射過程中使用的常量:
重寫OnInit方法:
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方法中添加:
3、新建一Winform項目,訪問asp.net中數據接口
發布asp.net項目,網址:http://192.168.4.22:8005
1)無需向數據接口傳遞數據:
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方式向數據接口傳遞數據,獲取接口數據
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#程序設計有所幫助。
新聞熱點
疑難解答