2014-04-19 5 views
13

एंड्रॉइड किटकैट में, URLConnection के कार्यान्वयन को ओकेएचटीपी द्वारा प्रतिस्थापित किया गया है, यह इसे कैसे डिबग कर सकता है?"com.android.okhttp" को कैसे डिबग करें

OkHttp इस निर्देशिका में है: external/okhttp/android/main/java/com/squareup/okhttp

जब मैं UrlInstance.openConnection().getClass().getName() कहते हैं, यह वर्तमान com.android.okhttp.internal.http.HttpURLConnectionImpl

कैसे मैं इसे डिबग कर सकते हैं? ऐसा लगता है कि मैं com.android.okhttp.*

को /android/main/java/com/squareup/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); 
} 

जाओ आगे आगे excute करते हैं, लेकिन 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; 
    } 
} 

enter image description here

+0

आप वास्तव में क्या करना चाहते हैं? – eleven

+0

@ ओक्सएचटीपी फॉक्ससिंक्स एओएसपी स्रोतों में बाहरी/ओखेट/एंड्रॉइड/मुख्य/जावा/कॉम/स्क्वायरअप/ओखट्प 'है, लेकिन रनटाइम क्लास'com.android.okhttp.internal.http.HttpURLConnectionImpl' है। मैं चरण-दर-चरण चरण का पालन करना चाहता हूं, लेकिन अब, मैं – log1000

+0

@ फॉक्सिंक्स में असमर्थ हूं, मैं कोड निष्पादन का पालन करना चाहता हूं। लेकिन, मुझे नहीं पता कि ओकेएचटीपी स्रोतों को 'com.android.okhttp' – log1000

उत्तर

2

यह संस्करण 0.8.x एंड्रॉयड स्टूडियो के बाद एंड्रॉयड एसडीके में विशिष्ट स्रोतों संलग्न करने के लिए विकल्प से लगता है हटा दिया गया है (यहाँ टिप्पणियां पढ़ें https://plus.google.com/+CyrilMottier/posts/GNcGL6xVth1)।

मुझे लगता है कि अगर आप डीबग करना चाहते हैं तो आप पुराने संस्करण या एंड्रॉइड स्टूडियो को आजमा सकते हैं, या (और मैं इस समाधान के साथ जाऊंगा) आपके आवेदन के एक हिस्से को एक्लिप्स (एंड्रॉइड एसडीके संस्करण) में निर्यात कर सकता हूं, शायद समस्याग्रस्त कनेक्शन शामिल है, और वहां आप ऐसे वर्ग के लिए स्रोत संलग्न कर सकते हैं जिनके पास डीबग के दौरान बहुत से स्रोत संलग्न नहीं हैं, आपको स्रोत कोड दृश्य में विधियों के हस्ताक्षर के साथ एक पृष्ठ देखना चाहिए, "स्रोत संलग्न करें" "

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

संबंधित मुद्दे