您的位置:首页 > 理论基础 > 计算机网络

OkHttpClient 进行网络请求

2018-01-30 18:38 465 查看
package com.example.mvpdemotwo.modle;

import android.util.Log;

import android.widget.Toast;

import com.example.mvpdemotwo.MainActivity;

import java.io.IOException;

import okhttp3.Call;

import okhttp3.Callback;

import okhttp3.FormBody;

import okhttp3.OkHttpClient;

import okhttp3.Request;

import okhttp3.RequestBody;

import okhttp3.Response;

/**

 * Created by hasee on 2018/1/30.

 */

public class LoginModle {

    //model层的login方法,对应presenter中的login方法

    public void login(String mobile, String password) {

        //如果mvc的话,直接在这个位置去联网请求

        //如果是mvp的话,我们需要把联网的操作放到modle中

        //构建一个OkHttpClient对象

        OkHttpClient okHttpClient = new OkHttpClient.Builder()

                .build();

        //通过表单的形式,构建一个RequestBody,通过添加key-value的形式,上传参数

        RequestBody requestBody = new FormBody.Builder()

                .add("source","android")

                .add("mobile",mobile)

                .add("password",password)

                .build();

        //通过我们构造的requestBody对象,去构造一个Request

        Request request = new Request.Builder()

                .url("https://www.zhaoapi.cn/user/login")

                .post(requestBody)

                .build();

        //使用okHttpClient对象执行newCall,传入一个Request,去构造一个call请求

        Call call = okHttpClient.newCall(request);

        //通过这个call请求去异步的请求登录接口

        call.enqueue(new Callback() {

            @Override

            public void onFailure(Call call, IOException e) {

                Log.e("tag","============================onFailure");

                //okhttp的回调是在子线程的

                //切到主线程,更新UI

                 runOnUiThread(new Runnable() {

                    @Override

                    public void run() {

                         //登录失败

                         Toast.makeText(MainActivity.this, "登录失败", Toast.LENGTH_LONG).show();

 

                     }

                 });

            }

            @Override

            public void onResponse(Call call, Response response) throws IOException {

                 runOnUiThread(new Runnable() {

                     @Override

                   public void run() {

                         //登录成功

                         Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_LONG).show();

                     }

                 });

                Log.e("tag","============================onResponse");

            }

        });

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: