2015-09-16 14 views
45

Ho appena copiare tutti i file jar di Http ma Android Studio cann't importare tutti questi vaso files.It dà un errore: Cannot resolve symbol HttpGet,HttpClient,HttpResponse.non può risolvere simbolo HttpGet, HttpClient, HttpResponce in Android Studio

Il mio file Activity è qui: -

public class MainActivity extends AppCompatActivity { 

ArrayList<Product> productslist; 
ProductAdapter adapter; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    productslist = new ArrayList<Product>(); 
    new JSONAsyncTask().execute("http://opencart.codeniques.com/myshop/?route=feed/web_api/products&id=60&key=test123"); 

    ListView listView = (ListView)findViewById(R.id.list); 
    adapter = new ProductAdapter(getApplicationContext(),R.layout.row,productslist); 

    listView.setAdapter(adapter); 

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      Toast.makeText(getApplicationContext(),productslist.get(position).getName(),Toast.LENGTH_LONG).show(); 
     } 
    }); 
} 

class JSONAsyncTask extends AsyncTask<String,Void,Boolean>{ 

    ProgressDialog dialog; 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     dialog = new ProgressDialog(MainActivity.this); 
     dialog.setMessage("Loading, please wait"); 
     dialog.setTitle("Connecting server"); 
     dialog.show(); 
     dialog.setCancelable(false); 
    } 

    @Override 
    protected Boolean doInBackground(String... params) { 
     try{ 
      HttpGet httppost = new HttpGet(params[0]); 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpResponse response = httpclient.execute(httppost); 

      int status = response.getStatusLine().getStatusCode(); 

      if(status == 200){ 
       HttpEntity entity = response.getEntity(); 
       String data = EntityUtils.toString(entity); 

       JSONObject jsono = new JSONObject(data); 
       JSONArray jarray = jsono.getJSONArray("products"); 

       for (int i = 0; i < jarray.length(); i++) { 
        JSONObject object = jarray.getJSONObject(i); 

        Product actor = new Product(); 

        actor.setId(object.getString("id")); 
        actor.setName(object.getString("name")); 
        actor.setDescription(object.getString("description")); 
        actor.setHref(object.getString("href")); 
        actor.setPrice(object.getString("pirce")); 
        actor.setImage(object.getString("thumb")); 
        actor.setSpecial(object.getString("special")); 
        actor.setRating(object.getString("rating")); 

        productslist.add(actor); 
      } 
       return true; 
      } 
     }catch (JSONException e){ 
      Log.e("Error :",e.getMessage()); 
     }catch (ParseException e){ 
      Log.e("Error :",e.getMessage()); 
     }catch (IOException e){ 
      Log.e("Error :",e.getMessage()); 
     }catch (Exception e){ 
      Log.e("Error :",e.getMessage()); 
     } 
     return false; 
    } 
    @Override 
    protected void onPostExecute(Boolean aBoolean) { 
     dialog.cancel(); 
     adapter.notifyDataSetChanged(); 
     if(aBoolean == false){ 
      Toast.makeText(getApplicationContext(), "Unable to fetch data from server", Toast.LENGTH_LONG).show(); 
     } 
    } 
}} 

e qui il mio gradle è qui: -

apply plugin: 'com.android.application' 
android { 
compileSdkVersion 23 
buildToolsVersion "22.0.1" 

defaultConfig { 
    applicationId "android.catalyst.com.newjsonarray" 
    minSdkVersion 16 
    targetSdkVersion 23 
    versionCode 1 
    versionName "1.0" 
} 
buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    }}} 
dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 

testCompile 'junit:junit:4.12' 
compile 'com.android.support:appcompat-v7:23.0.1' 
compile 'com.android.support:design:23.0.1'} 
+1

utilizzare HttpUrlConnection. invece di HttpClient. Vedere il collegamento [Link] (http://developer.android.com/reference/java/net/HttpURLConnection.html) – Irfan

+0

per quanto so che il client http Apache non è più supportato in marshmallow. iniziare a utilizzare il retrofit –

+0

È necessario utilizzare openConnection, HttpClient è obsoleto – Skynet

risposta

83

Basta aggiungere questo nei vostri dipendenze

compile 'org.apache.httpcomponents:httpcore:4.4.1' 
compile 'org.apache.httpcomponents:httpclient:4.5' 

Infine

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar'])  
testCompile 'junit:junit:4.12' 
compile 'com.android.support:appcompat-v7:23.0.1' 
compile 'com.android.support:design:23.0.1' 
compile 'org.apache.httpcomponents:httpcore:4.4.1' 
compile 'org.apache.httpcomponents:httpclient:4.5' 
} 

Modifica

È possibile aggiungere

android { 
    useLibrary 'org.apache.http.legacy' 
     } 

Spero che ti aiuti.

+1

grazie @IntelliJ Amiya funziona bene –

+0

@AnandJain Sono contento di aiutare. Spostarsi avanti. Codifica intelligente –

+0

non mi viene dato risolvere org.apache.httpcomp .. – Amitsharma

4

Si prega di rimuovere tutti i file jar di Http da librerie cartella e aggiungere sotto le dipendenze nel file Gradle :

compile 'org.apache.httpcomponents:httpclient:4.5' 
compile 'org.apache.httpcomponents:httpcore:4.4.3' 

Grazie.

+0

@Anand Jain: Si prega di aggiungere se mi manca alcuna libreria qui .. !! – AndiGeeky

0

Hai appena ricostruito il progetto

compile fileTree(dir: 'libs', include: ['*.jar']) 
12

HttpClient è stata sconsigliata a API Livello 22 e rimossi in API Livello 23. Devi usare URLConnection.

34

HttpClient non è più supportato in sdk 23. Devi usare URLConnection o downgrade per SDK 22 (compilare 'com.android.support:appcompat-v7:22.2.0')

Se avete bisogno di sdk 23, aggiungere questo al vostro Gradle:

In dipendenze aggiungere:

compile 'org.apache.httpcomponents:httpcore:4.4.1' 
compile 'org.apache.httpcomponents:httpclient:4.5' 

e anche aggiungere questo

android { 
    useLibrary 'org.apache.http.legacy' 
} 
+11

'useLibrary 'org.apache.http.legacy'' dovrebbe essere sufficiente per risolvere questo problema, le altre librerie non erano necessarie (almeno nel mio caso). – Franco

+0

Grazie, ha funzionato per me. –

1

Google suggerisce ufficialmente agli sviluppatori da usare biblioteca Volley per il networking roba correlata Here, così il suo momento di passare ad Volley, Felice di codifica

0

che è solo nel SDK 23, HttpClient e gli altri sono obsoleti.È possibile correggere cambiando la versione SDK di destinazione come di seguito:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 22 
    buildToolsVersion "22.0.1" 

    defaultConfig { 
     applicationId "vahid.hoseini.com.testclient" 
     minSdkVersion 10 
     targetSdkVersion 22 
     versionCode 1 
     versionName "1.0" 
    } 

    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

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

Per me, il seguito aiutato

Trova org.apache.http.legacy.jar che è in Android/Sdk/platforms/android-23/optional, aggiungerlo alla tua dipendenza.

Source

2

si prega di aggiungere questi codici sulle tue dependices. Funzionerà.

compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2' 
dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.1.0' 
    compile 'com.android.support:design:23.1.0' 
    compile 'com.android.support:cardview-v7:23.1.0' 
    compile 'com.android.support:recyclerview-v7:23.1.0' 

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

Si prega di rimuovere tutti i jar file di Http dalla cartella 'librerie' e aggiungere sotto le dipendenze nel file di Gradle:

compile 'org.apache.httpcomponents:httpclient:4.5' 
compile 'org.apache.httpcomponents:httpcore:4.4.3' 

o

useLibrary 'org.apache.http.legacy' 
+0

Lo stesso tipo di risposta già pubblicato qui. Per favore evita –

0

aggiungendo questo ha funzionato per me.

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