使用Okhttp上传图片

写项目的时候接触了上传图片这个模块。第一次使用OKhttputils上传图片时发现有时候上传成功,有时候失败报500错误,我纠结了一天,用postman测试接口是没有问题的,最后换回原生的okhttp框架去写。后来发现可能是之前的OKhttputils版本太低了导致的(2.6.2),现在用的Okhttp版本是(3.2.0

private static final String TAG = "MainActivity";
private Button btn_up;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn_up = (Button) findViewById(R.id.btn_up);
    btn_up.setOnClickListener(this);
}



private void upImage() {
    OkHttpClient mOkHttpClent = new OkHttpClient();
    File file = new File(Environment.getExternalStorageDirectory()+"/HeadPortrait.jpg");
    MultipartBody.Builder builder = new MultipartBody.Builder()
            .setType(MultipartBody.FORM)
            .addFormDataPart("img", "HeadPortrait.jpg",
                    RequestBody.create(MediaType.parse("image/png"), file));

    RequestBody requestBody = builder.build();

    Request request = new Request.Builder()
            .url(url)
            .post(requestBody)
            .build();
    Call call = mOkHttpClent.newCall(request);
    call.enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            Log.e(TAG, "onFailure: "+e );
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(MainActivity.this, "失败", Toast.LENGTH_SHORT).show();
                }
            });
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            Log.e(TAG, "成功"+response);
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_SHORT).show();
                }
            });
        }
    });

}

@Override
public void onClick(View v) {
    Log.e(TAG, "onClick: " );
    new Thread(new Runnable() {
        @Override
        public void run() {
            upImage();
        }
    }).start();
}

点击下载源码

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值