okhttp上传照片和下载照片

package com.example.myapplication5;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

import java.io.File;
import java.io.IOException;
import java.util.concurrent.TimeUnit;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private Button button1;
private Button button2;
private ImageView image;
String Path = "https://10.url.cn/eth/ajNVdqHZLLAxibwnrOxXSzIxA76ichutwMCcOpA45xjiapneMZsib7eY4wUxF6XDmL2FmZEVYsf86iaw/";
private static final int SUCCESS = 993;
private static final int FALL = 814;
Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage( msg );
        switch (msg.what) {
            case SUCCESS:
                byte[] picture =(byte[]) msg.obj;
                Bitmap bitmap = BitmapFactory.decodeByteArray( picture, 0, picture.length );
                image.setImageBitmap( bitmap );
                break;
            case FALL:
                Toast.makeText( MainActivity.this, "不好意思,孙佳鑫丑的,造成网络异常", Toast.LENGTH_SHORT ).show();
                break;
        }
    }
};


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate( savedInstanceState );
    setContentView( R.layout.activity_main );
    initView();
}

private void initView() {
    button1 = (Button) findViewById( R.id.button1 );
    button2 = (Button) findViewById( R.id.button2 );

    button1.setOnClickListener( this );
    button2.setOnClickListener( this );
    image = (ImageView) findViewById( R.id.image );
    image.setOnClickListener( this );
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.button1:
            String url = "https://www.718shop.com/sell/sell.m.picture.upload.do";
            File file = new File( Environment.getExternalStorageDirectory(), "aa.png");

            //创建RequestBody封装参数
            RequestBody fileBody = RequestBody.create( MediaType.parse("application/octet-stream"), file);
            //创建MultipartBody,给RequestBody进行设置
            MultipartBody multipartBody = new MultipartBody.Builder()
                    .setType(MultipartBody.FORM)
                    .addFormDataPart("image", "aa.png", fileBody)
                    .build();
            //创建Request
            Request request = new Request.Builder()
                    .url(url)
                    .post(multipartBody)
                    .build();

            //创建okhttp对象
            OkHttpClient okHttpClient = new OkHttpClient.Builder()
                    .connectTimeout(10, TimeUnit.SECONDS)
                    .readTimeout(10, TimeUnit.SECONDS)
                    .writeTimeout(10, TimeUnit.SECONDS)
                    .build();

            //上传完图片,得到服务器反馈数据
            okHttpClient.newCall(request).enqueue(new Callback() {
                @Override
                public void onFailure(Call call, IOException e) {
                    Log.e("ycf", "uploadMultiFile() e=" + e);
                }

                @Override
                public void onResponse(Call call, Response response) throws IOException {
                    Log.i("ycf", "uploadMultiFile() response=" + response.body().string());
                }
            });


            break;
        case R.id.button2:
            OkHttpClient okHttpClients = new OkHttpClient();

            Request requests = new Request.Builder()
                    .url( Path )
                    .build();
            Call call = okHttpClients.newCall( requests );

            call.enqueue( new Callback() {
                @Override
                public void onFailure(Call call, IOException e) {
                    handler.sendEmptyMessage( FALL );
                }

                @Override
                public void onResponse(Call call, Response response) throws IOException {
                    byte[] prcture = response.body().bytes();
                    Message message = handler.obtainMessage();
                    message.obj=prcture;
                    message.what=SUCCESS;
                    handler.sendMessage( message );
                  /*  Message message = handler.obtainMessage();
                    message.obj = prcture;
                    message.what = SUCCESS;
                    handler.sendMessage( message );*/
                }
            } );
            break;
    }
}

}

你可能感兴趣的:(okhttp上传照片和下载照片)