Android 网络请求 -- post上传和get下载

本文介绍了Android中进行网络请求的基本操作,包括如何进行POST方式的数据上传和GET方式的文件下载。请注意,在实际应用中为避免主线程阻塞,请求必须在子线程中执行。

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

一.post请求上传
(1)导入okhttp3
    implementation 'com.squareup.okhttp3:okhttp:3.10.0'
(2)post上传方法使用

注:使用的时候记得要开线程,不然会报错

new Thread(new Runnable() {
    @Override
    public void run() {
        try {
            uploadImage(url, deviceID, Bitmap2StrByBase64(finalBitmap));
        } catch (IOException e) {
            e.printStackTrace();
            Log.i("1111111", "IOException e :" + e.toString());
        } catch (JSONException e) {
            e.printStackTrace();
            Log.i("1111111", "JSONException e :" + e.toString());
        }
    }
}).start();

/**
 * post上传
 * 以上传图片为例  
 * @param url   服务器地址,必须字段
 * @param deviceID  接口所需的键值对数据,非必需字段
 * @param s     接口所需的键值对数据,非必需字段
 * @throws IOException
 * @throws JSONException
 */
public void uploadImage(String url, String deviceID, String s) throws IOException, JSONException {
    OkHttpClient okHttpClient = new OkHttpClient();
    RequestBody requestBody = new MultipartBody.Builder()
            .setType(MultipartBody.FORM)
            .addFormDataPart("token", deviceID)     //以下为接口对应的键值对,根据接口进行变动
            .addFormDataPart("upfile", s)
            .addFormDataPart("upload_type", "base64")
            .addFormDataPart("water", "no")
            .build();
    Request request = new Request.Builder()
            .url(url)
            .post(requestBody)
            .build();
    Response response = okHttpClient.newCall(request).execute();
    if (response.isSuccessful()) {    //响应成功
        //解析服务器返回的数据,因只需要一个字段的数据,此处使用的是JSONObject解析,没有使用Gson
        //注:response.body().string() 只能调用一次,多次调用会报错,可调用一次赋值后,多次使用赋值参数
        String data = response.body().string();
        Log.i("1111111", "返回的数据:" + data);
        JSONObject object = new JSONObject(data);
        String state = object.getString("state");
        if (state.equals("SUCCESS")) {
            Log.i("1111111", "上传成功");
        } else {
            Log.i("1111111", "上传失败");
        }
    }
}

(2)Get请求

/**
 * 下载图片
 *
 * @param url   服务器地址
 * @param imagePath 图片路径
 * @return byte[]
 * @throws IOException
 */
public static byte[] downloadImage(String url, String imagePath) throws IOException {
    OkHttpClient okHttpClient = new OkHttpClient();
    Request request = new Request.Builder()
            .url(url + "/show?fileName=" + imagePath)   
            .build();
    Response response = okHttpClient.newCall(request).execute();
    byte[] bytes = response.body().bytes();
    return bytes;
}

至此。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值