安卓學習----使用okHttp(POST方式)---登錄

来源:http://www.cnblogs.com/liunanjava/archive/2016/03/27/5326176.html
-Advertisement-
Play Games

工具類 Activity ...


 

 

工具類

package com.liunan.okhttpdemo3post.Utils;

import java.io.IOException;

import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import okhttp3.ResponseBody;

/**
 * Created by Administrator on 2016-03-27.
 */
public class HttpUtils {

    OkHttpClient client = new OkHttpClient();
    public static final MediaType JSON
            = MediaType.parse("application/json; charset=utf-8");

    public String login(String url, String json) throws IOException {
        //把請求的內容字元串轉換為json
        RequestBody body = RequestBody.create(JSON, json);
        //RequestBody formBody = new FormEncodingBuilder()

        Request request = new Request.Builder()
                .url(url)
                .post(body)
                .build();

        Response response = client.newCall(request).execute();

        String result = response.body().string();


        return result;


    }


    public String bolwingJson(String username, String password) {
        return "{'username':" + username + "," + "'password':" + password + "}";
        //     "{'username':" + username + ","+"'password':"+password+"}";
    }


}

 

Activity

 

package com.liunan.okhttpdemo3post;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.liunan.okhttpdemo3post.Utils.HttpUtils;

import org.w3c.dom.Text;

import java.io.IOException;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private static final String TAG ="MainActivity" ;
    //用戶名
    private EditText mEtUsername;
    //密碼
    private EditText mEtPwd;
    //登錄按鍵
    private Button mBtnLogin;
    private TextView mTvResult;

    private String url ="http://192.168.1.102:8080/Login/login";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
        initListener();
    }

    /**
     * 初始化組件
     */
    private void initView() {

        mEtUsername = (EditText) findViewById(R.id.login_et_name);
        mEtPwd = (EditText) findViewById(R.id.login_et_pwd);

        mBtnLogin = (Button) findViewById(R.id.login_btn_login);


        mTvResult = (TextView) findViewById(R.id.login_tv_result);

    }

    /**
     * 設置監聽器
     */
    private void initListener() {

        mBtnLogin.setOnClickListener(this);


    }

    /*
    單擊事件監聽
     */
    @Override
    public void onClick(View v) {
        if(v==mBtnLogin){
            login();
        }
    }

    /*
    登錄
     */
    private void login() {

        final String username = mEtUsername.getText().toString().trim();
        final String password = mEtPwd.getText().toString().trim();


        if(TextUtils.isEmpty(username) || TextUtils.isEmpty(password)){

            Toast.makeText(MainActivity.this, "用戶名或者密碼不能為空", Toast.LENGTH_SHORT).show();
            return;
        }

        new Thread(){
            @Override
            public void run() {

                    HttpUtils httpUtils = new HttpUtils();
                    //轉換為JSON
                    String user = httpUtils.bolwingJson(username, password);



                //String user ="{'username':" + username + ","+"'password':"+password+"}";

                Log.d(TAG, "user:" + user);

                try {
                    final String result = httpUtils.login(url, user);
                    Log.d(TAG, "結果:" + result);
                    //更新UI,在UI線程中
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            if("SUCCESS".equals(result)){

                                mTvResult.setText("登錄成功");

                            }else{
                                mTvResult.setText("登錄失敗");
                            }
                        }
                    });
                } catch (IOException e) {
                    e.printStackTrace();
                }




            }
        }.start();


    }
}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 上文《詳解Javascript的繼承實現》介紹了一個通用的繼承庫,基於該庫,可以快速構建帶繼承關係和靜態成員的javascript類,好使用也好理解,額外的好處是,如果所有類都用這種庫來構建,還能使代碼在整體上保持一致的風格,便於其它同事閱讀和理解。在寫完該文之後,這兩天時不時都在思考這個庫可能存在... ...
  • 對於H5來說,canvas可以說是它最有特色的一個地方了,有了它之後我們可以隨意的在網頁上畫各種各樣的圖形,做一些小游戲啊什麼的。canvas這個標簽的用法,在網上也有特別多的教程了,這裡就不作介紹了。今天我們就用canvas來做一個小小的時鐘。完整的代碼在這裡https://github.com/ ...
  • × 目錄 [1]首行縮進 [2]水平對齊 [3]字間隔[4]字母間隔[5]文本轉換 [6]文本修飾 前面的話 CSS文本樣式是相對於內容進行的樣式修飾。由於在層疊關係中,內容要高於背景。所以文本樣式相對而言更加重要。有些人對文本和字體樣式之間的不同不太瞭解,簡單地講,文本是內容,而字體則用於顯示這個 ...
  • 將瀏覽器預設的下拉框樣式清除,然後應用上自己的,再附一張向右對齊小箭頭的圖片即可。 IE8/9並不支持 appearance:none CSS屬性,想要支持的話可能需要非常特殊的方法,參考SF: 我們需要為其添加一個父容器,容器是用來覆蓋小箭頭的,然後為select添加一個向右的小偏移或者寬度大於父 ...
  • 首先我要解釋一下標題的意義,日期的簡潔格式展示,之所以簡介,是因為讓人一目瞭然,不需要思考是什麼時候。 在詳細一點就是我們在微信朋友圈中 所看到的時間格式。 例如:剛剛 -幾分鐘前-幾小時前等等。 今天這裡帶來的是一個簡單的類別。 方便實用。 以及簡單的實際應用。 先看看一看類別是什麼樣子的 .h ...
  • 新手瞭解 有不對的地方指點下 首先, 瞭解下什麼是GIT,GIT是一款開元的分散式版本控制工具, 在世界上的所有分散式版本控制工具中,GIT是最簡單,最流行,同時也是最常用的 相比於其他版本的控制工具而言,GIT也有著自己的特點 舉個例子,GIT與集中式版本控制中的SVN相比來說,區別主要在於以下幾 ...
  • 在現在這個離不開手機的時代,對於手機APP的開發也是一個很大的市場,所以自己也想去探一探手機APP開發,在我們進行Android開發的第一步就是搭建環境,具體怎麼搭建我就不說,這裡記錄一下在搭建環境的過程中遇到的一些問題,來幫助遇到相同問題的童鞋。 1、點擊安卓模擬器就會出現一個錯誤消息:Locat ...
  • 一、概述 Xfermode全名transfer-mode,其作用是實現兩張圖疊加時的混合效果。 網上流傳的關於Xfermode最出名的圖來源於AndroidSDK的samples中,名叫Xfermodes.java,效果如下: [轉載請保留本文地址:http://www.cnblogs.com/go ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...