1. 程式人生 > >okhttp實現註冊登入功能(與伺服器端)

okhttp實現註冊登入功能(與伺服器端)

請求方式:POST

引數 :username,password

URL  : http://**************/register?(這個我就不貼上來了)

返回值:{status:400, msg:"註冊失敗", data:null}{status:200, msg:"註冊成功", data:null}

       首先,註冊功能的實現思路是,將EditText文字框內使用者輸入的數值取出,接著通過post方法將取出的值傳送到伺服器端對應的引數上,然後伺服器會進行判斷,將返回值反饋給客戶端,我這裡伺服器上返回的是一串簡單的json格式字串,我們在將獲取的返回json字串進行解析,通過判斷status值來給出提示是否註冊成功(200表示成功,400表示失敗);簡單的json字串解析可通過gson來解析。

       需要獲得聯網許可權,在AndroidMainfest中配置

<uses-permission android:name="android.permission.INTERNET" />
在build.gradle(app)檔案中新增okhttp和gson :
compile 'com.squareup.okhttp3:okhttp:3.9.0'
compile 'com.google.code.gson:gson:2.8.2'
將這些配置好了,直接看下面程式碼即可
UserBeanl類
  1. publicclass UserBean {  
  2.     private String status;  
  3.     private  String msg;  
  4.     private String data;  
  5.    public String getStatus() {  
  6.         return status;  
  7.     }  
  8.     publicvoid setStatus(String status) {  
  9.         this.status = status;  
  10.     }  
  11.     public String getMsg() {  
  12.         return msg;  
  13.     }  
  14.     publicvoid setMsg(String msg) {  
  15.         this
    .msg = msg;  
  16.     }  
  17.     public String getData() {  
  18.         return data;  
  19.     }  
  20.     publicvoid setData(String data) {  
  21.         this.data = data;  
  22.     }  
  23. }  
實現的功能程式碼RegisterActivity
  1. publicclass RegisterActivity extends AppCompatActivity{  
  2.     private EditText name;  
  3.     private EditText pwd;  
  4.     private String name1,pwd1;  
  5.     private Button reg;  
  6.     private List<UserBean>list;  
  7.     final OkHttpClient client = new OkHttpClient();  
  8.     private Handler mHandler = new Handler(){  
  9.         @Override
  10.         publicvoid handleMessage(Message msg){  
  11.             if(msg.what==1){  
  12.                 String ReturnMessage = (String) msg.obj;  
  13.                 Log.i("獲取的返回資訊",ReturnMessage);  
  14.                 final UserBean userBean = new Gson().fromJson(ReturnMessage, UserBean.class);  
  15.                 final String AA = userBean.getMsg();  
  16.                 /*** 
  17.                  * 在此處可以通過獲取到的Msg值來判斷 
  18.                  * 給出使用者提示註冊成功 與否,以及判斷是否使用者名稱已經存在 
  19.                  */
  20.                 Log.i("MSGhahahha", AA);  
  21.             }  
  22.         }  
  23.     };  
  24.     @Override
  25.     protectedvoid onCreate(Bundle savedInstanceState) {  
  26.         super.onCreate(savedInstanceState);  
  27.         setContentView(R.layout.activity_main);  
  28. /** 
  29.  * 初始化 
  30.  */
  31.         name = (EditText) findViewById(R.id.name);  
  32.         pwd = (EditText) findViewById(R.id.pwd);  
  33.         reg = (Button) findViewById(R.id.register);  
  34.         reg.setOnClickListener(new View.OnClickListener() {  
  35.             @Override
  36.             publicvoid onClick(View v) {  
  37.                 //獲取相關引數
  38.                 name1=name.getText().toString().trim();  
  39.                 pwd1=pwd.getText().toString().trim();  
  40.                 //通過okhttp發起post請求
  41.                 postRequest(name1,pwd1);  
  42.             }  
  43.         });  
  44.     }  
  45.     /** 
  46.      * post請求後臺 
  47.      * @param username 
  48.      * @param password 
  49.      */
  50.     privatevoid postRequest(String username,String password)  {  
  51.         //建立請求表單,新增上傳伺服器的引數
  52.         RequestBody formBody = new FormBody.Builder()  
  53.                 .add("username",name1)  
  54.                 .add("password",pwd1)  
  55.                 .build();  
  56.         //發起請求
  57.         final Request request = new Request.Builder()  
  58.                 .url("http://**************/login?")  
  59.                 .post(formBody)  
  60.                 .build();  
  61.         //新建一個執行緒,用於得到伺服器響應的引數
  62.         new Thread(new Runnable() {  
  63.             @Override
  64.             publicvoid run() {  
  65.                 Response response = null;  
  66.                 try {  
  67.                     //回撥
  68.                     response = client.newCall(request).execute();  
  69.                     if (response.isSuccessful()) {  
  70.                         //將伺服器響應的引數response.body().string())傳送到hanlder中,並更新ui
  71.                         mHandler.obtainMessage(1, response.body().string()).sendToTarget();  
  72.                     } else {  
  73.                         thrownew IOException("Unexpected code:" + response);  
  74.                     }  
  75.                 } catch (IOException e) {  
  76.                     e.printStackTrace();  
  77.                 }  
  78.             }  
  79.         }).start();  
  80.     }  
  81. }  

下面試佈局程式碼
  1. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  2.     xmlns:tools="http://schemas.android.com/tools"
  3.     android:orientation="vertical"
  4.     android:layout_width="match_parent"
  5.     

    相關推薦

    okhttp實現註冊登入功能伺服器

    請求方式:POST引數 :username,passwordURL  : http://**************/register?(這個我就不貼上來了)返回值:{status:400, msg:"註冊失敗", data:null}{status:200, msg:"註冊

    java 實現簡單的銀行登入註冊退出功能未儲存資料

    RegisterAndLogin.java:package bao1;import java.util.Scanner;import java.util.regex.Pattern;import  bao1.Login;public class RegisterAndLogi

    cocos creator android studio 實現遊戲微信登入功能官方接入方式

    一:cocos creator端js呼叫java程式碼實現微信登入功能:JS部分  廢話不多說直接上程式碼: wechatLogin : function(){ jsb.reflection.callStaticMethod("org/cocos2dx/javascri

    【struts2+hibernate+spring專案實戰】實現使用者登入功能ssh

    一、概述 從今天才開始有時間來總結總結以前自己練習的一些東西,希望總結出來對以後可以更加便捷的來學習,也希望可以幫助到正需要這些東西的同行人,一起學習,共同進步。 二、 登入功能總結 2.1、登入功能概述 這個技術主要是運用Struts2+hib

    ajax 註冊登入功能格式判斷、資料庫資訊判斷

    註冊判斷效果 HTML 登錄檔單關鍵程式碼 <div class="title-line"> <span class="tit">註冊</span> </div>

    Struts2+Mybatis整合實現註冊登入功能

    1.要實現框架之間的整合,第一 2.接下來先配置Struts2的核心控制器web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://j

    vue實現復制功能項目使用

    pre container audio all 自己 內容 erro con app 安裝依賴 npm install --save vue-clipboard2 用法: import Vue import VueClipboard from ‘vue-

    資料結構-順序表的實現以及一些功能c語言版本

    #define MAXSIZE 100 //MAXSIZE為線性表可能的最大長度 #include<stdio.h> typedef int ElemType; typedef struct { ElemType data[MAXSIZE]; int length

    一分鐘實現內網穿透ngrok伺服器搭建

    簡單來說內網穿透的目的是:讓外網能訪問你本地的應用,例如在外網開啟你本地http://127.0.0.1指向的Web站點。 最近公司的花生殼到期了,要續費,發現價格一直在漲,都是5年以上的老使用者,旗艦版都沒有實現內網完全穿透,打算自己動手替換這個服務,中間走

    關於JS實現使用者登入驗證部分程式碼簡寫

        上個星期上課時,吳亮老師說,用JS實現下驗證,因回家耽誤了4天,現在把寫好的程式碼Pia上來~~~ function getFocus() //設定使用者名稱文字框獲取焦點 { document.getElementById("txtusername")

    android中 程式碼實現截圖功能靜態+動態視訊

    分享下靜態截圖的功能程式碼: public class ScreenShot { // 獲取指定Activity的截圖,儲存到png檔案 static Bitmap takeScreenShot(Activity activity) { L

    Jedis實現Publish/Subscribe功能釋出和訂閱

    Redis為我們提供了publish/subscribe(釋出/訂閱)功能。我們可以對某個channel(頻道)進行subscribe(訂閱),當有人在這個channel上publish(釋出)訊息時,redis就會通知我們,這樣我們可以收到別人釋出的訊息。  作為Java的redis客戶端,Jedis提

    在Sublime Text 3上實現python互動功能SublimeREPL外掛安裝

    原本python IDLE 3.6寫程式碼好好的,不知為何,莫名其妙地經常出現IndentationError:unexpected indent的錯誤,用Sublime Text 3開啟,發現的確又是縮排對齊的問題。網上搜索了半天,沒有解決方案,問題依舊。於是想轉用Subl

    網站自動登入功能安全-程式碼簡潔的設計

    參考:http://blog.csdn.net/ivon2008/article/details/39899477 網站的自動登入一直都是有利於提高使用者體驗的功能,如果設計不好,也非常容易洩漏使用者的賬戶資訊。         比較常見的功能實現方案是將使用者的登

    javaEE之jsp+JavaBean實現登入+註冊+留言功能外掛資料庫

    javaEE之jsp+JavaBean實現登入+註冊+留言功能(外掛資料庫) 實現效果 #UserBean.java package nmx; public class UserBean { private String username; private Stri

    Android用SharedPreferences儲存資料實現註冊登入功能首次安裝預設開啟註冊,記住密碼

    註冊介面xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    jsp實現登入註冊資料庫對接

    最近做了一些影象處理的內容,閒暇時間搞了下jsp,終於把至少兩個月之前的程式碼的bug找出來了... 具體內容我在之前一篇博文有介紹,主要是增加了資料庫的部分。其實一樣處理,獲得輸入的使用者名稱,密碼,然後判斷是否需要在當前頁面用javascipt處理下(比如註冊肯定是需要

    UnityAndroid交互-Unity接入高德地圖實現定位以及搜索周邊的功能使用Android Studio詳細操作

    nac mcc 以及 分享 pack create lis red 效果 剛進公司給安排的任務就是Unity接入高德地圖,算是踩了不少坑總算做出來了,抽點時間寫個博客記錄一下 廢話不多說 先上效果圖 獲取定位並根據手機朝向顯示周邊信息 使用的Unity

    C#.網路程式設計 Socket基礎Socket TCP協議 實現伺服器客戶簡單字串通訊

    簡介:        本章節主要討論了Socket的入門知識,還未針對Socket的難點問題(比如TCP的無訊息邊界問題)展開討論,往後在其他章節中進行研究。 注意點: 伺服器(比如臺式電腦)的IP為1.1.1.2,那麼客戶端(其他裝置,比如手機,Ipad)連線的一定是

    C#.網路程式設計 Socket基礎 基於WinForm系統Socket TCP協議 實現伺服器客戶.txt.word.png等不同型別檔案傳輸

    一、簡介: 前面的兩篇介紹了字串傳輸、圖片傳輸: 其實,本文針對Socket基礎(二)進一步完成,以便可以進行多種檔案傳輸。 二、基於不同的流(檔案流、記憶體流、網路等)讀寫。 1、圖片傳輸 方法一:(在客戶端用檔案流傳送(即將圖片寫到檔案流去,以便傳送),