2015-09-01 4 views
30

एंड्रॉयड में org.apache.http.HttpResponse आयात नहीं कर सकते मैं एंड्रॉयड स्टूडियो में इन पुस्तकालयों का उपयोग करना चाहते हैं: मैं एक वीडियो ट्यूटोरियल है, जिसमें शिक्षक ग्रहण उपयोग कर रहा है तो मैं जानता हूँ कि अनुसरण कर रही हूंस्टूडियो

import org.apache.http.HttpResponse; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.DefaultHttpClient; 

यह काम करता हैं।

लेकिन इनका उपयोग करने के लिए एंड्रॉइड स्टूडियो में मुझे कौन सी अतिरिक्त चीजें/पुस्तकालय जोड़ना है?

+0

आप अपने Gradle फ़ाइल में निर्भरता है? – dazito

उत्तर

38

एचटीपी क्लाइंट को एंड्रॉइड 5.1 में हटा दिया गया था और एंड्रॉइड 6.0 में एंड्रॉइड एसडीके से हटा दिया गया है। जबकि a workaround to continue using HttpClient in Android 6.0 with Android Studio है, आपको वास्तव में कुछ और स्थानांतरित करने की आवश्यकता है। यही कारण है कि "कुछ और" हो सकता है:

  • निर्मित क्लासिक जावा HttpUrlConnection
  • की अपाचे के स्वतंत्र पैकेजिंग HttpClient for Android
  • OkHttp (मेरी सिफारिश)
  • AndroidAsync

या, निर्भर करता है अपने HTTP कार्य की प्रकृति पर, आप एक लाइब्रेरी चुन सकते हैं जो उच्च-आदेश संचालन का समर्थन करता है (उदाहरण के लिए, वेब सेवा एपीआई के लिए रेट्रोफिट)।

चुटकी में, आप useLibrary 'org.apache.http.legacy' अपने android में अपने मॉड्यूल की build.gradle फ़ाइल में बंद करके विरासत API सक्षम कर सकते हैं। हालांकि, Google एंड्रॉइड के अंतर्निर्मित एचटीपी क्लाइंट का उपयोग बंद करने के लिए वर्षों से लोगों को सलाह दे रहा है, और इसलिए, यह एक स्टॉप-गैप कदम होना चाहिए, जबकि आप किसी अन्य एपीआई में अधिक स्थायी बदलाव पर काम करते हैं।

+0

यहाँ एक अद्यतन [वैकल्पिक हल के लिए लिंक] है (https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client) – Miguelos

+0

@Miguelos: मैं संपादित उस अद्यतन लिंक को शामिल करने का उत्तर - धन्यवाद! – CommonsWare

61

एचटीपी क्लाइंट एसडीके 23 में बहिष्कृत है।

आप 23

आप एप्लिकेशन

के रूप में/Gradle में HttpClient की निर्भरता को जोड़ने के लिए है करने के लिए 22

फिर भी आप अद्यतन Gradle SDK के साथ HttpClient जरूरत URLConnection या नीचे एसडीके आगे बढ़ना है

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    compile 'com.android.support:appcompat-v7:23.0.1' 

    compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2' 
    ... 
} 
+1

जो कोई भी एक अतुल्यकालिक HTTP पुस्तकालय और एसडीके 23, का उपयोग कर आप @TejaDroid के जवाब का पालन करना होगा। –

+1

इसे ऐप/ग्रेडल –

+0

में जोड़ें यह काम करता है, धन्यवाद – garima

23

मुख्य build.gradle - /build.gradle

buildscript { 
    ... 
    dependencies { 
     classpath 'com.android.tools.build:gradle:1.3.1' 
     // Versions: http://jcenter.bintray.com/com/android/tools/build/gradle/ 
    } 
    ... 
} 

मॉड्यूल विशिष्ट build.gradle -/app/build।Gradle

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.1" 
    ... 
    useLibrary 'org.apache.http.legacy' 
    ... 
} 
+0

हमें "मुख्य निर्माण ग्रेडल" को संशोधित नहीं करना चाहिए। सही?? एप्लिकेशन/निर्माण/Gradle में useLibrary 'org.apache.http.legacy' और यह मेरे लिए ठीक काम करता है: वैसे भी, मैं पंक्ति को डाला। –

0

मामले में आप, विकास शुरू करने के लिए, वर्ग से फ़ॉट OkHttp जाना जा रहे हैं अन्यथा यदि आप अपने पिछले कोड को चालू रखने की जरूरत है, तो अपनी परियोजना निर्भरता को लीगेसी लाइब्रेरी जोड़ें:

dependencies { 
    compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1' 
} 
1

dependencies { 
    compile group: 'cz.msebera.android' , name: 'httpclient', version: '4.4.1.1' 
} 

स्रोत:: अपाचे साइट के अनुसार इस Gradle निर्भरता आप शामिल करने की जरूरत है, अगर आप एंड्रॉयड एपीआई 23 या नए का उपयोग करें

+0

हाँ यह काम कर रहा है –

-1

उपयोग यह: -

compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2' 
+0

अन्य उत्तर में पहले से ही यह शामिल है। http://stackoverflow.com/a/32649055/2308683 –

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