Java “如何调试”;com.android.okhttp“;
在android kitkat中,URLConnection的实现已经被OkHttp所取代,它如何调试它 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
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 sourcesexternal/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;
}
}