android okio使用方法,Android联网第三方框架okhttp-3.8.0.jar/okio-1.13.0.jar用法

本文介绍了如何在Android中使用OkHttp和Okio进行GET和POST网络请求,包括URL编码、请求构建和回调处理。同时展示了如何通过OkHttp下载图片并显示在ImageView上。

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

在依赖中可以用

implementation 'com.yanzhenjie.nohttp:okhttp:+'

//下载文件时需要在依赖:implementation files('libs/okio-1.13.0.jar')

或者用jar包

implementation files('libs/okhttp-3.8.0.jar')

implementation files('libs/okio-1.13.0.jar')

"GET"方式请求网络

public void getDataByOKGet() {

OkHttpClient okHttpClient = new OkHttpClient();//把客户端new出来

Request.Builder builder = new Request.Builder();//请求建立对象

try {

Request request = builder

.get()//"GET"方式请求网络

.url("http://apicloud.mob.com/environment/query?key=26b2b13b4b440&city="

+ URLEncoder.encode("哈尔滨","UTF-8")

+"&province="

+URLEncoder.encode("黑龙江","UTF-8"))

.build();//请求对象建立请求

Call call = okHttpClient.newCall(request);

call.enqueue(new Callback() {//入队

@Override

public void onFailure(Call call, IOException e) {

//当失败时

}

@Override

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

// 当响应时

runOnUiThread(new Thread(){//在主线程更新UI

@Override

public void run() {

try {

mTextView.setText(response.body().string());//从网络上获取的就是JSON

} catch (IOException e) {

e.printStackTrace();

}

}

});

}

});

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

}

"POST"方式请求网络(所以需要写一个模板,来产生一个请求主体)

public void getDataByOKPost(){

try {

OkHttpClient okHttpClient = new OkHttpClient();//OK客户端对象

FormBody.Builder build = new FormBody.Builder();//建设模板

RequestBody requestBody = build

.add("city",URLEncoder.encode("哈尔滨","UTF-8"))

.add("province",URLEncoder.encode("黑龙江","UTF-8"))

.add("key",URLEncoder.encode("26b2b13b4b440","UTF-8"))

.build();//用模板.build返回请求主体

Request.Builder builder = new Request.Builder();//建立请求对象

Request request = builder

.post(requestBody)//"POST"方式请求网络(所以需要写一个模板,来产生一个请求主体)

.url("http://apicloud.mob.com/v1/postcode/pcd")

.build();

Call call = okHttpClient.newCall(request);

call.enqueue(new Callback() {

@Override

public void onFailure(Call call, IOException e) {

}

@Override

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

final String s = response.body().string();

runOnUiThread(new Thread(){

@Override

public void run() {

try {

mTextView.setText(s);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

});

} catch (Exception e) {

e.printStackTrace();

}

}

显示图片下载

public void getDataByOKDown(){

try {

OkHttpClient okHttpClient = new OkHttpClient();

FormBody.Builder build = new FormBody.Builder();

RequestBody requestBody = build.build();

Request.Builder builder = new Request.Builder();

Request request = builder

.post(requestBody)

.url("http://pic2.sc.chinaz.com/files/pic/pic9/201808/zzpic13391.jpg")

.build();

Call call = okHttpClient.newCall(request);

call.enqueue(new Callback() {

@Override

public void onFailure(Call call, IOException e) {

}

@Override

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

InputStream is = response.body().byteStream();

ByteArrayOutputStream bs = new ByteArrayOutputStream();

byte buffer[] = new byte[512];

int length = -1;

while( (length = is.read(buffer)) != -1 ){

bs.write(buffer,0,length);

bs.flush();

}

final File file = new File(

Environment.getExternalStorageDirectory()+"/12331710.jpg");

FileOutputStream fs = new FileOutputStream(file);

byte data[] = bs.toByteArray();

Log.d("data",data.length+"");

fs.write(data,0,data.length);

fs.flush();

is.close();

bs.close();

fs.close();

runOnUiThread(new Thread(){

@Override

public void run() {

Log.d("data",file.getAbsolutePath());

mImageView.setImageBitmap(BitmapFactory.decodeFile(file.getAbsolutePath()));

}

});

}

});

} catch (Exception e) {

e.printStackTrace();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值