Android使用OkHttp(Basic認證)並上傳文件

 /**
     *
     * @param path 上傳文件本地地址
     * @param url 上傳地址
     * @param username 賬號
     * @param password 密碼
     */
    public static void upload(String path,String url,String username,String password){
        String name = path.substring(path.lastIndexOf("/") + 1);
        final String basic = Credentials.basic(username, password);
        RequestBody body = RequestBody.create(MediaType.parse("image/jpeg"), new File(path));
        RequestBody requestBody = new MultipartBody.Builder()
                .setType(MultipartBody.FORM)
                //參數分別爲:文件,文件名字,文件類型與路徑
                .addFormDataPart("file", name, body)//文件名
                .build();
        OkHttpClient client = new OkHttpClient.Builder()
                .authenticator(new Authenticator() {
                    @Override
                    public Request authenticate(Route route, Response response) throws IOException {
                        return response.request().newBuilder().header("Authorization", basic).build();
                    }
                })
                .connectTimeout(10, TimeUnit.SECONDS)
                .writeTimeout(10, TimeUnit.SECONDS)
                .readTimeout(20, TimeUnit.SECONDS)
                .build();
        Request request = new Request.Builder()
                .url(url)
                .post(requestBody)
                .build();
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.e("連接失敗", "onFailure: " + e.getMessage());
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                Log.e(TAG, "連接成功:" + response);
            }
        });

    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章