Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “如何调试”;com.android.okhttp“;_Java_Android_Dalvik - Fatal编程技术网

Java “如何调试”;com.android.okhttp“;

Java “如何调试”;com.android.okhttp“;,java,android,dalvik,Java,Android,Dalvik,在android kitkat中,URLConnection的实现已经被OkHttp所取代,它如何调试它 OkHttp位于以下目录中:external/OkHttp/android/main/java/com/squareup/OkHttp 当我调用UrlInstance.openConnection().getClass().getName()时,它显示com.android.okhttp.internal.http.HttpURLConnectionImpl 我如何调试它?似乎我无法将/an

在android kitkat中,URLConnection的实现已经被OkHttp所取代,它如何调试它

OkHttp位于以下目录中:
external/OkHttp/android/main/java/com/squareup/OkHttp

当我调用
UrlInstance.openConnection().getClass().getName()
时,它显示
com.android.okhttp.internal.http.HttpURLConnectionImpl

我如何调试它?似乎我无法将
/android/main/java/com/squareup/okhttp/*
com.android.okhttp.

当代码执行到
时,返回streamHandler.openConnection(this)

继续,但不能深入到
com.squareup.okhttp.HttpHandler#openConnection

下图中调试器中高亮显示的线程为灰色

package com.squareup.okhttp;

import java.io.IOException;
import java.net.Proxy;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLStreamHandler;

public class HttpHandler extends URLStreamHandler {
    @Override protected URLConnection openConnection(URL url) throws IOException {
        return newOkHttpClient(null /* proxy */).open(url);
    }

    @Override protected URLConnection openConnection(URL url, Proxy proxy) throws IOException {
        if (url == null || proxy == null) {
            throw new IllegalArgumentException("url == null || proxy == null");
        }
        return newOkHttpClient(proxy).open(url);
    }

    @Override protected int getDefaultPort() {
        return 80;
    }

    protected OkHttpClient newOkHttpClient(Proxy proxy) {
        OkHttpClient client = new OkHttpClient();
        client.setFollowProtocolRedirects(false);
        if (proxy != null) {
            client.setProxy(proxy);
        }

        return client;
    }
}

从Android Studio的0.8.x版开始,在Android SDK中附加特定源的选项似乎已被删除(请阅读此处的评论)

我想如果你想调试,你可以尝试一个旧版本或Android Studio,或者(我会选择这个解决方案)将你的应用程序的一部分导出到Eclipse(Android SDK版本),可能只是涉及麻烦连接的部分,在那里你可以很容易地为一个在调试期间没有附加源的类附加源,在“源代码”视图中,您应该会看到一个只包含方法签名的页面,按钮为“附加源代码”


你到底想做什么?@foxinsock OkHttp位于AOSP sources
external/OkHttp/android/main/java/com/squareup/OkHttp
,但是运行时类是
com.android.OkHttp.internal.http.HttpURLConnectionImpl
。我想一步一步地遵循代码,但现在,我unable@Foxinsocks我想跟着代码执行。但是,我不知道如何将OkHttp源代码关联到
com.android.OkHttp
您有解决方案吗?
package com.squareup.okhttp;

import java.io.IOException;
import java.net.Proxy;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLStreamHandler;

public class HttpHandler extends URLStreamHandler {
    @Override protected URLConnection openConnection(URL url) throws IOException {
        return newOkHttpClient(null /* proxy */).open(url);
    }

    @Override protected URLConnection openConnection(URL url, Proxy proxy) throws IOException {
        if (url == null || proxy == null) {
            throw new IllegalArgumentException("url == null || proxy == null");
        }
        return newOkHttpClient(proxy).open(url);
    }

    @Override protected int getDefaultPort() {
        return 80;
    }

    protected OkHttpClient newOkHttpClient(Proxy proxy) {
        OkHttpClient client = new OkHttpClient();
        client.setFollowProtocolRedirects(false);
        if (proxy != null) {
            client.setProxy(proxy);
        }

        return client;
    }
}