大(da)叔也說Xamarin~Android篇(pian)~調用遠(yuan)程API接口,發POST請求
Xamarin我們在(zai)上節(jie)已經教大家如何去部署它(ta)的(de)環(huan)境了,今天(tian)來說(shuo)一個(ge)實際的(de)例子,使用(yong)android客戶調用(yong).net web api的(de)一個(ge)接口,并發送POST請求(qiu),當服務(wu)端回到(dao)請求(qiu)后做出(chu)響(xiang)應(ying),客戶端android將響(xiang)應(ying)的(de)內容(rong)輸出(chu),并跳換到(dao)別一個(ge)Activity頁面,在(zai)新視圖(tu)上加載網(wang)頁內容(rong)到(dao)webView控件上,整個(ge)流(liu)程結束!
一 在主頁面上添加幾個表單元素,賬號,密碼,登(deng)陸按鈕(niu),并在Activity類的OnCreate方法(fa)中為它們賦值,并添加按鈕(niu)的click事件
protected override void OnCreate (Bundle savedInstanceState) { base.OnCreate (savedInstanceState); // Set our view from the "main" layout resource SetContentView (Resource.Layout.Main); // Get our button from the layout resource, // and attach an event to it Button button = FindViewById<Button> (Resource.Id.myButton); button.Click += delegate { button.Text = string.Format ("{0} clicks!", count++); }; Android.Util.Log.Info ("normal", "日志zzl"); var loginBtn = FindViewById<Button> (Resource.Id.loginBtn); var username = FindViewById<TextView> (Resource.Id.username); var password = FindViewById<TextView> (Resource.Id.password); var result = FindViewById<TextView> (Resource.Id.result); loginBtn.Click += delegate { string url = "//api.xuexiba.com/v1/User/Login"; //創建HttpClient(注意傳入(ru)HttpClientHandler) using (var http = new HttpClient ()) { var content = new FormUrlEncodedContent (new Dictionary<string, string> () { { "username",username.Text }, { "password",password.Text } }); var response = http.PostAsync (url, content); result.Text = response.Result.Content.ReadAsStringAsync ().Result; Intent intent = new Intent(this, typeof(ViewPageActivity)); StartActivity(intent); } }; }
二 在ViewPageActivity里添加一個webView用(yong)來顯示網頁的內容,如下(xia)代碼
protected override void OnCreate (Bundle savedInstanceState) { base.OnCreate (savedInstanceState); SetContentView (Resource.Layout.ViewPage); var webView = FindViewById<WebView> (Resource.Id.webView); //啟用Javascript Enable webView.Settings.JavaScriptEnabled = true; //載(zai)入網址(zhi) webView.LoadUrl ("//www.sina.com"); //直接(jie)在當(dang)前webView上打開 webView.SetWebViewClient (new CustWebViewClient ()); }
注意,代碼webView.SetWebViewClient (new CustWebViewClient ())表示(shi)使(shi)用現有(you)的webView加載網(wang)頁(ye)內容,而如果不加這行,那(nei)么網(wang)頁(ye)將使(shi)用系(xi)統(tong)自(zi)帶的瀏覽(lan)器進行加載,
下載看一下CustWebViewClient 這個類的內容
public class CustWebViewClient : WebViewClient { public override bool ShouldOverrideUrlLoading (WebView view, string url) { view.LoadUrl (url); return true; } }
OK,在(zai)我們設計頁面(mian)時,可(ke)以(yi)直接從工具箱上進行(xing)拖動,最后布局向這樣
最后進行(xing)APK的生(sheng)成(cheng),我(wo)們的程序(xu)包(bao)就(jiu)算完成(cheng)了!