栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

Android Studio-okhttp获取的信息如何让显示在TextView

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android Studio-okhttp获取的信息如何让显示在TextView

1.activity_main.xml





    

    
2.MainActivity.java

get同步方式:

package com.example.okhttp;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.io.IOException;

import okhttp3.Call;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;


public class MainActivity extends AppCompatActivity {

    public static final int UPDATE_TEXT=1;
    private TextView tvContent;
    private EditText etContent;
    private static String string;
    private static String goods;
    private static final String TAG="MainActivty";
    private final OkHttpClient mclient=new OkHttpClient();

    @SuppressLint("HandlerLeak")
    private Handler handler=new Handler(Looper.myLooper()){
        @Override
        public void handleMessage(@NonNull Message msg) {
            if(msg.what==UPDATE_TEXT){
                tvContent.setText(string);
            }
            super.handleMessage(msg);
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tvContent = findViewById(R.id.tv_content);
        etContent = findViewById(R.id.et_content);
    }

    //执行一个耗时任务
   public void start(View view){
        new Thread (new Runnable(){
            @Override
            public void run(){
            	goods = etContent.getText().toString();
                get(goods);
                Message message=new Message();
                message.what=UPDATE_TEXT;
                handler.sendMessage(message);
            }
        }).start();
       Toast.makeText(this,"开启子线程请求网络!",Toast.LENGTH_SHORT).show();
    }

    private void get(String goods) {
        Request.Builder builder = new Request.Builder();
        builder.url("http://api.tianapi.com/txapi/lajifenlei/index?key=2fc5beaf8a31e04108e4a5e1d8cea0f6&word=" + goods);
        Request request = builder.build();

        Log.d(TAG, "run:" + request);

        OkHttpClient client = new OkHttpClient();


        Call call = mclient.newCall(request);

        try {
            Response response = call.execute();
            if (response.isSuccessful()) {
                string = response.body().string();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

运行结果:

get异步方式:

package com.example.okhttp;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.io.IOException;

import okhttp3.Call;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class MainActivity extends AppCompatActivity {
    public static final int UPDATE_TEXT=1;
    private TextView tvContent;
    private EditText etContent;
    private static String string;
    private static String goods;
    private static final String TAG="MainActivty";
    private final OkHttpClient mclient=new OkHttpClient();
    
    @SuppressLint("HandlerLeak")
    private Handler handler=new Handler(Looper.myLooper()){
        @Override
        public void handleMessage(@NonNull Message msg) {
            if(msg.what==UPDATE_TEXT){
                tvContent.setText(string);
            }
            super.handleMessage(msg);
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tvContent = findViewById(R.id.tv_content);
        etContent = findViewById(R.id.et_content);
    }

    //执行一个耗时任务
    public void start(View view){
        new Thread (new Runnable(){
            @Override
            public void run(){
            	goods = etContent.getText().toString();
                GetFun(goods,new VolleyCallback() {
                    @Override
                    public void onSuccess(String result){
                        Log.d(TAG,"onSuccess"+result);
                        Message message=new Message();
                        message.what=UPDATE_TEXT;
                        message.obj=result;
                        handler.sendMessage(message);
                    }
                });
            };
        }).start();
        Toast.makeText(this,"开启子线程请求网络!",Toast.LENGTH_SHORT).show();
    }

    public static void GetFun(String goods,final VolleyCallback callback){
        String url = "http://api.tianapi.com/txapi/lajifenlei/index?key=2fc5beaf8a31e04108e4a5e1d8cea0f6&word="+goods;
        OkHttpClient okHttpClient = new OkHttpClient();
        final Request request = new Request.Builder()
                .url(url)
                .get()//默认就是GET请求,可以不写
                .build();
        Call call = okHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.d(TAG, "onFailure: ");
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                string = response.body().string();
                callback.onSuccess(string);
                //Log.d(TAG, "onResponse: " + response.body().string());
            }
        });
    }
    private interface VolleyCallback {
        void onSuccess(String result);
    }
}

运行结果:

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1036335.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号