【Android】使用HttpURLConnection异步发送Http请求并使用Handler线程通信修改UI线程

本文介绍了如何在Android应用中利用HttpURLConnection进行异步HTTP请求,并通过Handler来实现在后台线程处理数据,然后更新UI线程。首先,详细讲解了如何封装Http请求,接着展示了一个使用线程类进行异步操作的Demo。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一般我们发送http请求时都会另外开一个线程使用异步的方法,但是存在子线程不能直接修改ui线程内容的问题,所以就要用到线程间的通信,最近刚刚接触这一方面的东西,于是写了一个功能非常简单发送Http请求的类,使用了Thread、Handler、HttpURLConnection来实现了http请求并将获取到的内容拿到UI线程中。在此记录一下。

一、封装Http请求

自定义线程类,通过继承Thread实现。

package com.example.school;

import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;

/**
 * Created by Guanzhou·Chen on 2019/5/9.
 */

public class HttpTool extends Thread {
   
   

    public static final int MODE_GET = 101;
    public static final int MODE_POST = 102;

    private int message_what;
    private int current_mode;

    private String str_url;
    private String data = "";
    private HashMap<String, String> param = new HashMap<String, String>();

    private Handler handler;

    /**
     * @param MODL         选择POST或GET方式,HttpTool.MODE_GET / HttpTool.MODE_POST
     * @param url          发送http请求的url,包括ip后的router
     * @param message_what 使用Handler时,分辨消息的message.what
     */
    HttpTool(int MODL, String url, int message_what, Handler handler) {
   
   
        current_mode = MODL;
        str_url = url;
        this.message_what = message_what;
        this.handler = handler;
    }

    /**
     * 清空要发送的数据
     */
    public void clearData() {
   
   
        data = "";
        param.clear();
    }

    /**
     * @param key   要发送数据的key值
     * @param value 要发送数据的value值
     */
    public void addData(String key, String value) {
   
   
        if (current_mode == MODE_GET) {
   
   
            addGETData(key, value);
        } else {
   
   
            addPOSTData(key, value)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值