Maison  >  Article  >  développement back-end  >  Comment xamarin utilise-t-il la méthode get pour transmettre la valeur json à la page de connexion du serveur php

Comment xamarin utilise-t-il la méthode get pour transmettre la valeur json à la page de connexion du serveur php

墨辰丷
墨辰丷original
2018-05-15 16:46:191449parcourir

Cet article présente principalement comment xamarin utilise la méthode get pour transmettre la valeur json à la page de connexion du serveur php. Les amis intéressés peuvent s'y référer. J'espère que cela sera utile à tout le monde.

Récemment, j'ai pris le temps d'écrire un programme utilisant xamarin pour transférer json d'Android vers le serveur php. Il sert de page de connexion et nécessite le composant system.json. Le côté php récupère directement les données. et le met dans json. Pas grand chose à dire. Maintenant, passons au code, créez d'abord un serveur php. Il peut être utilisé sur les segments du réseau local, je vais le tester moi-même.

Voici le code de la page 6.php sur le serveur

<?php
// array for JSON response
$response = array();
// check for required fields
if (isset($_GET[&#39;name&#39;]) && isset($_GET[&#39;password&#39;]) )
{
  
   $name = $_GET[&#39;name&#39;];
   $pwd = $_GET[&#39;password&#39;];
   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);
   
}
?>

Le code pour xamarin Android est le suivant :


Regardons d'abord le code de l'interface utilisateur

<?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>

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

Recommandations associées :

Introduction détaillée et utilisation de la fonction file_get_contents

PHP utilise file_get_contents pour envoyer des requêtes http avec une fonction simple

Jugement de fonction personnalisée PHP Qu'il s'agisse de la méthode de soumission Get, Post et Ajax

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn