1. 程式人生 > >okhttp框架實現註冊登入

okhttp框架實現註冊登入

OkHttp 相較於其它的實現有以下的優點:
1. 支援SPDY,允許連線同一主機的所有請求分享一個socket。 如果SPDY不可用,會使用連線池減少請求延遲。 使用GZIP壓縮下載內容,且壓縮操作對使用者是透明的。 利用響應快取來避免重複的網路請求。 當網路出現問題的時候,OKHttp會依然有效,它將從常見的連線問題當中恢復。 如果你的服務端有多個IP地址,當第一個地址連線失敗時,OKHttp會嘗試連線其他的地址,這對IPV4和IPV6以及寄宿在多個數據中心的服務而言,是非常有必要的。

下面就是我簡單的寫的一個登入註冊的例子,供大家參考:

首先需要匯入okhttp架包:
這裡寫圖片描述

執行介面展示:

註冊頁面註冊成功

RegisterActivity程式碼:

package wujie.com.okhttp;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import
com.squareup.okhttp.FormEncodingBuilder; import com.squareup.okhttp.OkHttpClient; import com.squareup.okhttp.Request; import com.squareup.okhttp.RequestBody; import com.squareup.okhttp.Response; import java.io.IOException; /** * Created by wujie on 2016/10/24. */ public class RegisterActivity extends
Activity{
private Button reg; private EditText name,pwd; private String name1,pwd1; private TextView text1; final OkHttpClient client = new OkHttpClient(); private Handler mHandler = new Handler(){ @Override public void handleMessage(Message msg){ if(msg.what==1){ String qq = (String) msg.obj; Log.i("WUJIE", qq); text1.setText(qq); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.register); /** * 初始化資料 */ name= (EditText) findViewById(R.id.name); pwd= (EditText) findViewById(R.id.pwd); reg= (Button) findViewById(R.id.register); text1= (TextView) findViewById(R.id.textview); /** * 註冊按鈕監聽 */ reg.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //獲取相關引數 name1=name.getText().toString().trim(); pwd1=pwd.getText().toString().trim(); //通過okhttp發起post請求 postRequest(name1,pwd1); } }); } /** * post請求後臺 * @param name * @param pwd */ private void postRequest(String name,String pwd) { //建立請求表單,新增上傳伺服器的引數 RequestBody formBody = new FormEncodingBuilder() .add("name",name) .add("pwd",pwd) .add("method","okhttpreg") .build(); //發起請求 final Request request = new Request.Builder() .url("http://192.168.1.101:8080/Ai/LoginServlet") .post(formBody) .build(); //新建一個執行緒,用於得到伺服器響應的引數 new Thread(new Runnable() { @Override public void run() { Response response = null; try { //回撥 response = client.newCall(request).execute(); if (response.isSuccessful()) { //將伺服器響應的引數response.body().string())傳送到hanlder中,並更新ui mHandler.obtainMessage(1, response.body().string()).sendToTarget(); } else { throw new IOException("Unexpected code:" + response); } } catch (IOException e) { e.printStackTrace(); } } }).start(); } }

佈局檔案register.xml:

<?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"
    >
<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/name"
    android:hint="使用者名稱"/>
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/pwd"
        android:hint="密碼"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/register"
        android:text="註冊"/>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textview"
        android:textColor="#ff0000"
        android:textSize="18sp"
        android:paddingTop="10dp"/>
</LinearLayout>

網路許可權:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

服務端介面程式碼,由於時間過得比較久了,以前的程式碼找不到了,本人就重新寫了一個註冊的介面,供大家參考
謝謝大家的支援!