简介
- 由于Android给我们提供的Http请求方式之一 :HttpURLConnection,使用起来非常麻烦,所以一般我们实际开发并不会用HttpURLConnection和HttpClient,而是会使用别人封装好的第三方网络请求框架,诸如:Volley,android-async-http,loopj,OkHttp等,因为网络操作涉及到 异步以及多线程,自己动手写的话,很麻烦,所以实际开发还是直接用第三方。
- 这里我们选择的是近来最火的开源HTTP框架——OKHttp,来实现Android客户端的工作。
- GitHub地址:https://github.com/square/okhttp
- 上传功能包含了一个简单的文件选择器
- 下载功能目前做得极不完善,几乎等于没做,后续还会改进
准备工作
- 新建一个安卓工程
- 从官方网站上下载okhttp和okio的jar包
okhttp的下载地址:http://square.github.io/okhttp/
okio的下载地址:
https://repo1.maven.org/maven2/com/squareup/okio/okio/1.11.0/okio-1.11.0.jar
okio的jar包的下载地址其实就在okhttp的官网上,不一定用我给的链接去下载。
PS.也可以通过Maven或者Gradle来导入,但因为速度太慢,所以我直接下了jar包
3.将这两个jar包导入到工程中,放在libs目录下
右键点击jar包,选择Add As Library就行了,两个包都要添加。
下面是具体代码
MainActivity.java
package com.example.ywy.mycloud1;
import java.io.FileOutputStream;
import java.io.IOException;
import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Interceptor;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import okhttp3.ResponseBody;
import okio.Buffer;
import okio.BufferedSink;
import okio.BufferedSource;
import okio.ForwardingSink;
import okio.ForwardingSource;
import okio.Okio;
import okio.Sink;
import okio.Source;
public class MainActivity extends AppCompatActivity {
private OkHttpClient okHttpClient;