2010-12-21 19 views
13

जब मैं DefaultHttpClient ऑब्जेक्ट बनाता हूं और वेबपृष्ठ हिट करने का प्रयास करता हूं, तो अनुरोध सेटिंग्स में निर्दिष्ट प्रॉक्सी के माध्यम से अनुरोध नहीं किया जाता है।एंड्रॉइड एचटीपी क्लाइंट सिस्टम प्रॉक्सी सेटिंग्स का उपयोग नहीं करता

एपीआई दस्तावेज़ों के माध्यम से देखकर, मैं कहीं भी नहीं देखता हूं जहां मैं प्रॉक्सी निर्दिष्ट कर सकता हूं हालांकि एंड्रॉइड के पास Proxy कक्षा है जो मुझे सिस्टम की प्रॉक्सी सेटिंग्स को पढ़ने की अनुमति देती है।

क्या कोई तरीका है कि मैं एक HttpClient में प्रॉक्सी सेटिंग्स का उपयोग कर सकता हूं?

+0

जो एक मार्ग बनाने के लिए एक पैरामीटर के रूप में एक प्रॉक्सी होस्ट लेता HttpRoute' 'के लिए एक निर्माता नहीं है .. लेकिन मुझे नहीं लगता कि एचटीपी क्लाइंट कैसे बनाया जाए जो इसका उपयोग करेगा। http://developer.android.com/reference/org/apache/http/conn/routing/HttpRoute.html –

+0

हाँ, मैंने यह भी देखा, लेकिन मुझे पता नहीं लगा कि उन्हें एक साथ कैसे कनेक्ट किया जाए। – Cristian

+1

ओह .. क्या आपको यह जवाब दिखाई दिया? http://stackoverflow.com/questions/2539669/android-unable-to-make-httprequest-behind-firewall/2542928#2542928 –

उत्तर

23

प्रयास करें:

DefaultHttpClient httpclient = new DefaultHttpClient(); 

HttpHost proxy = new HttpHost("someproxy", 8080); 
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); 

(here से चुनी गई)

+3

perfekt, लेकिन मुझे उपकरणों पर Webrequests को संभालना है, जो (अलग) Proxys या नहीं उपयोग कर सकते हैं प्रॉक्सी सेटिंग्स, क्या यह पता लगाने की संभावना है कि उपयोगकर्ता के पास प्रॉक्सीसेटिंग है या नहीं? मेरे कुछ ग्राहक विभिन्न बंद उपयोगकर्ता समूह का उपयोग कर रहे हैं। – 2red13

+0

सिस्टम से उचित प्रॉक्सी प्राप्त करने के लिए यह उत्तर देखें: http://stackoverflow.com/questions/10811698/getting-wifi-proxy-settings-in-android/13616054#13616054 – Adam

+0

कनेक्ट करने में बहुत अधिक समय लगेगा सेट पैरा के बाद प्रॉक्सी करने के लिए। मेरे ऐप में मेरे पास बहुत से https अनुरोध हैं और प्रत्येक उदाहरण प्रॉक्सी से कनेक्ट करने में लंबा समय लगता है। क्या कोई बेहतर समाधान है? –

3

मैं Android Proxy Library कि सार के लिए हर Android संस्करण के लिए प्रॉक्सी सेटिंग का उपयोग करने के लिए प्रयास करें विकासशील कर रहा हूँ। आप वर्तमान में उपयोगकर्ता द्वारा चुने गए प्रॉक्सी सेटिंग्स को आसानी से प्राप्त कर सकते हैं।

+0

लिंक देता है, तो यह मेरे अनुरोध को मुख्य सर्वर पर सीधे रूट करना चाहता है, यह https://github.com/shouldit/android- प्रॉक्सी? –

+0

हां धन्यवाद। ठीक कर दिया। – lechuckcaptain

9

सबसे पहले, मैं यह सुनिश्चित कर दूंगा कि अनुरोध एंड्रॉइड डिवाइस की सेटिंग्स में सेट प्रॉक्सी सेटिंग्स गुणों का पालन कर रहा है। आप एंड्रॉइड.प्रोवाइडर में सिस्टम क्लास को देख कर कोड के माध्यम से इसे निर्धारित कर सकते हैं। सेटिंग्स; यदि उपयोगकर्ता सिस्टम प्रॉक्सी सेटिंग का था

पहचान करने के लिए, आप निम्न कर सकते हैं:

System.getProperty("http.proxyHost"); 
    System.getProperty("http.proxyPort"); 

    System.getProperty("https.proxyHost"); 
    System.getProperty("https.proxyPort"); 

आप DefaultHTTPClient का एक उदाहरण है, तो आप देख सकते हैं कि यह प्रासंगिक प्रॉक्सी सेटिंग भी है।

DefaultHttpClient httpclient = new DefaultHttpClient(); 
    httpclient.getParams().getParameter(ConnRoutePNames.DEFAULT_PROXY); 

इन सभी तरीकों को प्रॉक्सी सेटिंग 'के लिए' कर रहे हैं, और 'सेट' तरीकों एक ही तरीके से लागू किया जाता है, या तो System.setProperty या httpclient.setParams के माध्यम से।

आशा है कि इससे मदद मिलेगी!

+0

क्या होता है यदि प्रॉक्सी सेटिंग्स त्रुटि देते हैं या प्रॉक्सी सर्वर डाउन होता है, इन परिस्थितियों को कैसे संभालें – Pratswinz

1

प्रयास करें:

System.setProperty("http.proxyHost", <your proxy host name>); 
System.setProperty("http.proxyPort", <your proxy port>); 

या

DefaultHttpClient httpclient = new DefaultHttpClient(); 
HttpHost httpproxy = new HttpHost("<your proxy host>",<your proxy port>); 
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, httpproxy); 

या

HttpHost proxy = new HttpHost("ip address",port number); 
DefaultHttpClient httpclient = new DefaultHttpClient(); 
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,proxy); 

HttpPost httpost = new HttpPost(url); 
List<NameValuePair> nvps = new ArrayList<NameValuePair>(); 
nvps.add(new BasicNameValuePair("param name", param)); 
httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.ISO_8859_1)); 
HttpResponse response = httpclient.execute(httpost); 

HttpEntity entity = response.getEntity(); 
System.out.println("Request Handled?: " + response.getStatusLine()); 
InputStream in = entity.getContent(); 
httpclient.getConnectionManager().shutdown(); 
+0

प्रॉक्सी सेटिंग्स त्रुटि या प्रॉक्सी सर्वर डाउन होने पर क्या होता है, इन परिस्थितियों को कैसे संभालना है – Pratswinz

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