package com.tianze.androidnetworkokhttp;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.concurrent.TimeUnit;
import kotlin.Pair;
import okhttp3.Call;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class OkHttpDownloadFileActivity extends AppCompatActivity {
    private static final String TAG = "OkHttpDownloadFileActiv";
    @RequiresApi(api = Build.VERSION_CODES.M)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ok_http_download_file);
        //权限请求
        if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
            requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},123);
        }
    }
    public void downloadFile(View view) {
        String url = "http://10.0.2.2:9102/download/15";
        OkHttpClient client = new OkHttpClient.Builder()
                .connectTimeout(1000, TimeUnit.MILLISECONDS)
                .build();
        Request request = new Request.Builder()
                .get()
                .url(url)
                .build();
        final Call call = client.newCall(request);
        new Thread(new Runnable() {
            @Override
            public void run() {
                InputStream inputStream = null;
                FileOutputStream fos = null;
                try {
                    Response execute = call.execute();
                    for (Pair<? extends String, ? extends String> header : execute.headers()) {
                        Log.e(TAG, header.getFirst()+" ==run: == "+header.getSecond());
                    }
                    String contentDisposition = execute.header("Content-disposition");
                    String fileName = contentDisposition.replace("attachment; filename=", "");
                    File outFile = new File(OkHttpDownloadFileActivity.this.getExternalFilesDir(Environment.DIRECTORY_PICTURES)+File.separator+fileName);
                    Log.e(TAG, "run: "+outFile.toString() );
                    if (!outFile.getParentFile().exists()){
                        outFile.mkdirs();
                    }
                    if (!outFile.exists()){
                        outFile.createNewFile();
                    }
                    fos = new FileOutputStream(outFile);
                    inputStream = execute.body().byteStream();
                    int len;
                    byte [] buffer = new byte[1024];
                    while ((len = inputStream.read(buffer,0,buffer.length))!=-1){
                        fos.write(buffer,0,len);
                    }
                    fos.flush();
                } catch (IOException e) {
                    e.printStackTrace();
                }finally {
                    try {
                        fos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    try {
                        inputStream.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();
    }
}
根据okhtpp视频中的文件下载的步骤写的代码没有将代码下载下来,不知道是哪里出了问题。log上没有报错
2020-02-06 17:28:05.330 9460-9460/? I/idnetworkokhtt: Not late-enabling -Xcheck:jni (already on)
2020-02-06 17:28:05.582 9460-9460/? W/idnetworkokhtt: Unexpected CPU variant for X86 using defaults: x86
2020-02-06 17:28:06.252 9460-9460/com.tianze.androidnetworkokhttp W/idnetworkokhtt: Accessing hidden method Landroid/graphics/drawable/Drawable;->getOpticalInsets()Landroid/graphics/Insets; (light greylist, linking)
2020-02-06 17:28:06.252 9460-9460/com.tianze.androidnetworkokhttp W/idnetworkokhtt: Accessing hidden field Landroid/graphics/Insets;->left:I (light greylist, linking)
2020-02-06 17:28:06.252 9460-9460/com.tianze.androidnetworkokhttp W/idnetworkokhtt: Accessing hidden field Landroid/graphics/Insets;->right:I (light greylist, linking)
2020-02-06 17:28:06.252 9460-9460/com.tianze.androidnetworkokhttp W/idnetworkokhtt: Accessing hidden field Landroid/graphics/Insets;->top:I (light greylist, linking)
2020-02-06 17:28:06.252 9460-9460/com.tianze.androidnetworkokhttp W/idnetworkokhtt: Accessing hidden field Landroid/graphics/Insets;->bottom:I (light greylist, linking)
2020-02-06 17:28:06.381 9460-9460/com.tianze.androidnetworkokhttp W/idnetworkokhtt: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (light greylist, reflection)
2020-02-06 17:28:06.382 9460-9460/com.tianze.androidnetworkokhttp W/idnetworkokhtt: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (light greylist, reflection)
2020-02-06 17:28:06.392 9460-9460/com.tianze.androidnetworkokhttp W/idnetworkokhtt: Accessing hidden method Landroid/widget/TextView;->getTextDirectionHeuristic()Landroid/text/TextDirectionHeuristic; (light greylist, linking)
2020-02-06 17:28:06.443 9460-9460/com.tianze.androidnetworkokhttp D/OpenGLRenderer: Skia GL Pipeline
2020-02-06 17:28:06.501 9460-9534/com.tianze.androidnetworkokhttp D/HostConnection: HostConnection::get() New Host Connection established 0xdf81e4b0, tid 9534
2020-02-06 17:28:06.522 9460-9534/com.tianze.androidnetworkokhttp D/HostConnection: HostComposition ext ANDROID_EMU_CHECKSUM_HELPER_v1 ANDROID_EMU_native_sync_v2 ANDROID_EMU_native_sync_v3 ANDROID_EMU_native_sync_v4 ANDROID_EMU_dma_v1 ANDROID_EMU_YUV420_888_to_NV21 ANDROID_EMU_YUV_Cache ANDROID_EMU_async_unmap_buffer GL_OES_EGL_image_external_essl3 GL_OES_vertex_array_object GL_KHR_texture_compression_astc_ldr ANDROID_EMU_gles_max_version_3_0 
2020-02-06 17:28:06.524 9460-9534/com.tianze.androidnetworkokhttp I/ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0
2020-02-06 17:28:06.524 9460-9534/com.tianze.androidnetworkokhttp I/ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 0
2020-02-06 17:28:06.524 9460-9534/com.tianze.androidnetworkokhttp I/OpenGLRenderer: Initialized EGL, version 1.4
2020-02-06 17:28:06.524 9460-9534/com.tianze.androidnetworkokhttp D/OpenGLRenderer: Swap behavior 1
2020-02-06 17:28:06.524 9460-9534/com.tianze.androidnetworkokhttp W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
2020-02-06 17:28:06.524 9460-9534/com.tianze.androidnetworkokhttp D/OpenGLRenderer: Swap behavior 0
2020-02-06 17:28:06.569 9460-9534/com.tianze.androidnetworkokhttp D/eglCodecCommon: setVertexArrayObject: set vao to 0 (0) 0 0
2020-02-06 17:28:06.569 9460-9534/com.tianze.androidnetworkokhttp D/EGL_emulation: eglCreateContext: 0xdf805360: maj 3 min 0 rcv 3
2020-02-06 17:28:06.665 9460-9534/com.tianze.androidnetworkokhttp D/EGL_emulation: eglMakeCurrent: 0xdf805360: ver 3 0 (tinfo 0xdf8036f0)
2020-02-06 17:28:06.733 9460-9534/com.tianze.androidnetworkokhttp D/HostConnection: createUnique: call
2020-02-06 17:28:06.733 9460-9534/com.tianze.androidnetworkokhttp D/HostConnection: HostConnection::get() New Host Connection established 0xdf81e730, tid 9534
2020-02-06 17:28:06.736 9460-9534/com.tianze.androidnetworkokhttp D/HostConnection: HostComposition ext ANDROID_EMU_CHECKSUM_HELPER_v1 ANDROID_EMU_native_sync_v2 ANDROID_EMU_native_sync_v3 ANDROID_EMU_native_sync_v4 ANDROID_EMU_dma_v1 ANDROID_EMU_YUV420_888_to_NV21 ANDROID_EMU_YUV_Cache ANDROID_EMU_async_unmap_buffer GL_OES_EGL_image_external_essl3 GL_OES_vertex_array_object GL_KHR_texture_compression_astc_ldr ANDROID_EMU_gles_max_version_3_0 
2020-02-06 17:28:06.736 9460-9534/com.tianze.androidnetworkokhttp E/eglCodecCommon: GoldfishAddressSpaceHostMemoryAllocator: ioctl_ping failed for device_type=5, ret=-1
2020-02-06 17:28:06.809 9460-9534/com.tianze.androidnetworkokhttp D/EGL_emulation: eglMakeCurrent: 0xdf805360: ver 3 0 (tinfo 0xdf8036f0)
2020-02-06 17:28:06.906 9460-9534/com.tianze.androidnetworkokhttp D/eglCodecCommon: setVertexArrayObject: set vao to 0 (0) 3 2
2020-02-06 17:28:29.975 9460-9460/com.tianze.androidnetworkokhttp W/idnetworkokhtt: Accessing hidden method Lcom/android/org/conscrypt/OpenSSLSocketImpl;->setUseSessionTickets(Z)V (light greylist, reflection)
2020-02-06 17:28:29.975 9460-9460/com.tianze.androidnetworkokhttp W/idnetworkokhtt: Accessing hidden method Lcom/android/org/conscrypt/OpenSSLSocketImpl;->setHostname(Ljava/lang/String;)V (light greylist, reflection)
2020-02-06 17:28:29.975 9460-9460/com.tianze.androidnetworkokhttp W/idnetworkokhtt: Accessing hidden method Lcom/android/org/conscrypt/OpenSSLSocketImpl;->getAlpnSelectedProtocol()[B (light greylist, reflection)
2020-02-06 17:28:29.976 9460-9460/com.tianze.androidnetworkokhttp W/idnetworkokhtt: Accessing hidden method Lcom/android/org/conscrypt/OpenSSLSocketImpl;->setAlpnProtocols([B)V (light greylist, reflection)
2020-02-06 17:28:29.988 9460-9460/com.tianze.androidnetworkokhttp W/idnetworkokhtt: Accessing hidden method Ldalvik/system/CloseGuard;->get()Ldalvik/system/CloseGuard; (light greylist, reflection)
2020-02-06 17:28:29.988 9460-9460/com.tianze.androidnetworkokhttp W/idnetworkokhtt: Accessing hidden method Ldalvik/system/CloseGuard;->open(Ljava/lang/String;)V (light greylist, reflection)
2020-02-06 17:28:29.988 9460-9460/com.tianze.androidnetworkokhttp W/idnetworkokhtt: Accessing hidden method Ldalvik/system/CloseGuard;->warnIfOpen()V (light greylist, reflection)
2020-02-06 17:28:29.989 9460-9460/com.tianze.androidnetworkokhttp D/NetworkSecurityConfig: Using Network Security Config from resource network_security_config debugBuild: true
2020-02-06 17:28:30.151 9460-9552/com.tianze.androidnetworkokhttp E/OkHttpDownloadFileActiv: Content-disposition ==run: == attachment; filename=15.png
2020-02-06 17:28:30.151 9460-9552/com.tianze.androidnetworkokhttp E/OkHttpDownloadFileActiv: Content-Type ==run: == application/x-msdownload
2020-02-06 17:28:30.151 9460-9552/com.tianze.androidnetworkokhttp E/OkHttpDownloadFileActiv: Content-Length ==run: == 187024
2020-02-06 17:28:30.151 9460-9552/com.tianze.androidnetworkokhttp E/OkHttpDownloadFileActiv: Date ==run: == Thu, 06 Feb 2020 09:28:30 GMT
2020-02-06 17:28:30.154 9460-9552/com.tianze.androidnetworkokhttp E/OkHttpDownloadFileActiv: run: /storage/emulated/0/Android/data/com.tianze.androidnetworkokhttp/files/Pictures/15.png
权限也给了,下载下来的时候也刷新了,但是就是图片!还有就是服务器会输出文件的长度,不知道是不是服务器的问题

您的每一个用心回答,都会让这个世界变得更美好一些!