Как да отстранявате грешки com.android.okhttp

В 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.*

Когато кодът се изпълни до return streamHandler.openConnection(this);

/**
 * Returns a new connection to the resource referred to by this URL.
 *
 * @throws IOException if an error occurs while opening the connection.
 */
public URLConnection openConnection() throws IOException {
    return 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;
    }
}

въведете описание на изображението тук


person log1000    schedule 19.04.2014    source източник
comment
Какво точно искате да направите?   -  person eleven    schedule 19.04.2014
comment
@Foxinsocks OkHttp е в източниците на AOSP external/okhttp/android/main/java/com/squareup/okhttp, но класът по време на изпълнение еcom.android.okhttp.internal.http.HttpURLConnectionImpl. Искам да следвам кода стъпка по стъпка, но сега не мога   -  person log1000    schedule 19.04.2014
comment
@Foxinsocks искам да проследя изпълнението на кода. Но не знам как да свържа източниците OkHttp с com.android.okhttp   -  person log1000    schedule 19.04.2014
comment
имате ли вече решение?   -  person Qing    schedule 11.04.2015


Отговори (1)


Изглежда от версия 0.8.x нататък на Android Studio опцията за прикачване на конкретни източници към Android SDK е премахната (Прочетете коментарите тук https://plus.google.com/+CyrilMottier/posts/GNcGL6xVth1).

Предполагам, че ако искате да отстраните грешки, можете да опитате по-стара версия или Android Studio, или (и аз бих избрал това решение) да експортирате част от приложението си в Eclipse (версията на Android SDK), може би само частта, включваща проблемния връзка и там можете много лесно да прикачите източници за клас, който няма прикачени източници по време на отстраняване на грешки, трябва да видите страница само със сигнатурите на методите в изгледа на изходния код, с бутона за „Прикачване на източник“

http://4.bp.blogspot.com/-a2EnbC4wP6g/UN2Z7QzFlyI/AAAAAAAAAg0/D2tFh6AgRrM/s1600/Eclipse_String_Class_File.PNG

person alessiop86    schedule 01.11.2014