usar studio org including error como clase android android-studio android-support-library

org - No se puede resolver el símbolo HttpGet, HttpClient, HttpResponce en Android Studio



httpclient get android (11)

Acabas de reconstruir tu proyecto

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

Acabo de copiar todos los archivos jar de Http pero Android Studio no puede importar todos estos archivos jar. Da un error: Cannot resolve symbol HttpGet,HttpClient,HttpResponse .

Mi archivo de Activity está aquí: -

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(); } } }}

y aquí está mi gradle : -

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''}


Agregar esto funcionó para mí.

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


Elimine todos los archivos jar de Http de la carpeta ''libs'' y agregue las siguientes dependencias en el archivo gradle:

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

o

useLibrary ''org.apache.http.legacy''


Elimine todos los archivos jar de Http de la carpeta libs y agregue las siguientes dependencias en el archivo gradle:

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

Gracias.


Eso es solo en SDK 23, Httpclient y otros están en desuso. Puede corregirlo cambiando la versión del SDK de destino como se muestra a continuación:

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'' }


Google sugiere oficialmente a los desarrolladores que usen la biblioteca Volley para cosas relacionadas con redes Here , así que es hora de cambiar a Volley, codificación feliz


HttpClient ya no es compatible con sdk 23. Debe usar URLConnection o cambiar a sdk 22 (compile ''com.android.support:appcompat-v7:22.2.0'')

Si necesita SDK 23, agregue esto a su gradle:

En dependencias agregue:

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

y también agregue esto

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


Para mí, lo siguiente ayudó

Encuentre org.apache.http.legacy.jar que está en Android/Sdk/platforms/android-23/optional, agréguelo a su dependencia.

Source


Simplemente agregue esto en sus dependencias

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

Finalmente

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'' }

Y también agregue este código:

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

FYI

Especifique los requisitos para la biblioteca Apache HTTP Legacy Si su aplicación está dirigida al nivel de API 28 (Android 9.0) o superior, debe incluir la siguiente declaración dentro del elemento de AndroidManifest.xml.

<uses-library android:name="org.apache.http.legacy" android:required="false" />


agregue estos códigos a sus dependencias. Funcionará.

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

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


HttpClient quedó en desuso en el API Nivel 22 y se eliminó en el API Nivel 23. URLConnection usar URLConnection .