이 글은 주로 xamarin이 get 메소드를 사용하여 json 값을 PHP 서버 로그인 페이지에 전달하는 방법을 소개합니다. 관심 있는 친구들이 참고하면 좋습니다.
최근에 xamarin을 사용하여 json을 android에서 php 서버로 전송하는 프로그램을 작성하는 데 시간이 걸렸습니다. 이는 system.json 구성 요소가 필요하며 php 측에서 데이터를 직접 가져옵니다. 더 이상 자세한 내용은 없습니다. 코드로 이동하여 먼저 PHP 서버를 구축하고 로컬 영역 네트워크의 네트워크 세그먼트에서 사용할 수 있도록 하고 개인적으로 테스트해 보겠습니다.
서버의 6.php 페이지 코드입니다.
<?php // array for JSON response $response = array(); // check for required fields if (isset($_GET['name']) && isset($_GET['password']) ) { $name = $_GET['name']; $pwd = $_GET['password']; if($name=="aaa" & $pwd=="222") { // successfully inserted into database $response["success"] = 1; $response["message"] = "sucess"; // echoing JSON response echo json_encode($response); $myfile = fopen("newfile.txt", "w") or die("Unable to open file!"); $txt = "成功"; fwrite($myfile, $txt); fclose($myfile); } else { // failed to insert row $response["success"] = 0; $response["message"] = "name or password is wrong"; // echoing JSON response echo json_encode($response); $myfile = fopen("newfile.txt", "w") or die("Unable to open file!"); $txt = "用户名或密码错误"; fwrite($myfile, $txt); fclose($myfile); } } else { // required field is missing $response["success"] = 0; $response["message"] = "the require is not compition "; // echoing JSON response echo json_encode($response); $myfile = fopen("newfile.txt", "w") or die("Unable to open file!"); $txt = "缺少"; fwrite($myfile, $txt); fclose($myfile); } ?>
xamarin 안드로이드 측 코드는 다음과 같습니다.
우선 UI 인터페이스 코드
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/linearLayout1"> <TextView android:text="用户名:" android:textAppearance="?android:attr/textAppearanceLarge" android:layout_width="wrap_content" android:layout_height="match_parent" android:id="@+id/textView1" /> <EditText android:inputType="textMultiLine" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/editText1" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/linearLayout3"> <TextView android:text="密码:" android:textAppearance="?android:attr/textAppearanceLarge" android:layout_width="wrap_content" android:layout_height="match_parent" android:id="@+id/textView2" /> <EditText android:inputType="date" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/editText2" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/linearLayout2" android:gravity="center"> <Button android:text="登录" android:layout_width="wrap_content" android:layout_height="match_parent" android:id="@+id/button1" /> </LinearLayout> </LinearLayout>
MainActivity.cs 코드를 살펴보겠습니다.
using Android.App; using Android.Widget; using Android.OS; using System.Json; using System.Net; using System.IO; using System; using Android.Content; using System.Linq; namespace App10 { [Activity(Label = "App10", MainLauncher = true)] public class MainActivity : Activity { Button btn_login; EditText txt_name; EditText txt_pwd; protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); btn_login = FindViewById<Button>(Resource.Id.button1); txt_name = FindViewById<EditText>(Resource.Id.editText1); txt_pwd = FindViewById<EditText>(Resource.Id.editText2); btn_login.Click += Btn_lgoin_Click; } private void Btn_lgoin_Click(object sender, System.EventArgs e) { string name = txt_name.Text; string pwd = txt_pwd.Text; if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(pwd)) { Toast.MakeText(this, "请输入用户名和密码!!", ToastLength.Long).Show(); return; } else { //JSON请求URL GET的方式 string url = "http://192.168.0.45:8081/jsontest/6.php?name="+name+"&password="+pwd; //创建一个请求 var httpReq = (HttpWebRequest)HttpWebRequest.Create(new Uri(url)); httpReq.BeginGetResponse(new AsyncCallback(ReadXamarin), httpReq); } } //异步回调方法 public void ReadXamarin(IAsyncResult asyn) { var httpReq = (HttpWebRequest)asyn.AsyncState; //获取响应 using (var httpRes = (HttpWebResponse) httpReq.EndGetResponse(asyn)) { //判断是否成功获取响应 if (httpRes.StatusCode == HttpStatusCode.OK) { //读取响应 var text = new StreamReader(httpRes.GetResponseStream()).ReadToEnd(); //切换到UI线程,否则无法对控件进行操作 RunOnUiThread(() => { Toast.MakeText(this, text, ToastLength.Long).Show(); }); } } } } }
관련 추천:
file_get_contents 함수 소개 및 자세한 사용법 설명
PHP는 file_get_contents를 사용하여 http 요청 전송 기능이 간단합니다.
PHP 사용자 정의 함수로 Get, Post 및 Ajax 제출 여부를 확인합니다. 방법
위 내용은 Xamarin은 어떻게 get 메서드를 사용하여 json 값을 PHP 서버 로그인 페이지에 전달합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!