第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

使用OkHttp

標(biāo)簽:
Java Android

OkHttp的主页地址:https://github.com/square/okhttp

添加依赖:

implementation("com.squareup.okhttp3:okhttp:4.9.0")
implementation("com.squareup.okio:okio:2.8.0")

Okio库是前者的通信基础。

下面我们来看一下OkHttp的具体用法,首先

第一步,需要创建一个OkHttpClient的实例,如下所示:

OkHttpClient client = new OkHttpClient(); // 创建一个实例

第二步,如果你想要发起一条HTTP请求,就需要创建一个Request对象:

//发起一条HTTP请求
Request request = new Request.Builder().build();

当然,上述代码只是创建了一个空的Request对象,并没有什么实际的作用。我们可以在最终的build()方法之前连缀很多其他方法来丰富这个Request对象。比如,可以通过url()方法来设置目标的网络地址,如下:

Request request = new Request.Builder()
        .url("http://www.baidu.com")
        .build();


第三步,调用OkHttpClient的newCall()方法来创建一个call对象,并调用它的execute()方法来发送请求并获取服务器返回的数据:

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

其中,Response对象就是服务器返回的数据了,我们可以使用如下写法来得到返回的具体内容:

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


如果是发起一条POST,我们需要先构建出一个Request Body对象来存放待提交的 参数,如下所示:

RequestBody requestBody = new FormBody.Builder()
        .add("username","admin")
        .add("password","123456")
        .build();

然后在Request.Builder中调用一下post()方法,并将RequestBody对象传入:

Request request = new Request.Builder()
        .url("http://baidu.com")
        .post(requestBody)
        .build();

接下来的操作就跟GET请求一样了,调用execute()方法来发送请求并获取服务器返回的数据即可。


接下来用一个完整的实例来演示上面的做法:

package com.example.webviewapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.TextView;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;

import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

public class MainActivity extends AppCompatActivity {
   private Button send,upload;
   private TextView txt;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        send = findViewById(R.id.send_request);
        txt = findViewById(R.id.response_txt);
        upload = findViewById(R.id.upload);

        send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                sendRequestWithOkHttp();
            }
        });

    }

    private void sendRequestWithOkHttp() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                OkHttpClient client = new OkHttpClient();
                Request request = new Request.Builder()
                        .url("http://www.baidu.com")
                        .build();
                try {
                    Response response = client.newCall(request).execute();
                    String responseData = response.body().string();
                    showRequest(responseData);
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        }).start();
    }

    private void showRequest(final String responseData) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                txt.setText(responseData);
            }
        });
    }

}

这里很重要的知识点:

  1. 网络请求一定要用new Thread()开线程

  2. 在UI界面上显示,一定要用runOnUiThread()

https://img1.sycdn.imooc.com//5f9403ec00017fda06731114.jpg


點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消