Tengo una clase simple escrita en Android Studio:
package com.mysite.myapp;
import org.apache.http.client.HttpClient;
public class Whatever {
public void headBangingAgainstTheWallExample () {
HttpClient client = new DefaultHttpClient();
}
}
y de esto obtengo el siguiente error de tiempo de compilación:
Cannot resolve symbol HttpClient
¿No está HttpClient
incluido en el SDK de Android Studio? Incluso si no lo es, lo agregué a mi compilación de Gradle de esta manera:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.0'
compile 'org.apache.httpcomponents:httpclient:4.5'
}
Con o sin la última línea de compilación, el error es el mismo. ¿Qué me estoy perdiendo?
HttpClient
ya no se admite en SDK 23. Tienes que usar URLConnection
o degradar a SDK 22 ( compile 'com.android.support:appcompat-v7:22.2.0'
)
Si necesita sdk 23, agregue esto a su gradle:
android {
useLibrary 'org.apache.http.legacy'
}
También puede intentar descargar e incluir el jar de HttpClient directamente en su proyecto o usar OkHttp en su lugar
HttpClient quedó obsoleto en el nivel de API 22 y se eliminó en el nivel de API 23. Aún puede usarlo en el nivel de API 23 y en adelante si es necesario, sin embargo, es mejor pasar a métodos compatibles para manejar HTTP. Entonces, si está compilando con 23, agregue esto en su build.gradle:
android {
useLibrary 'org.apache.http.legacy'
}
La respuesta de TejaDroid en el enlace de abajo me ayudó. No se puede importar org.apache.http.HttpResponse en Android Studio
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'
...
}
Para usar Apache HTTP para SDK nivel 23:
Build.gradle de nivel superior - /build.gradle
buildscript {
...
dependencies {
classpath 'com.android.tools.build:gradle:1.5.0'
// Lowest version for useLibrary is 1.3.0
// Android Studio will notify you about the latest stable version
// See all versions: http://jcenter.bintray.com/com/android/tools/build/gradle/
}
...
}
Notificación del estudio de Android sobre la actualización de gradle:
Build.gradle específico del módulo - /app/build.gradle
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
...
useLibrary 'org.apache.http.legacy'
...
}
Pruebe esto funcionó para mí Agregue esta dependencia a su archivo build.gradle
compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
1- descargue los archivos jar de Apache (a partir de esta respuesta) el archivo 4.5.zip de:
https://hc.apache.org/downloads.cgi?Preferred=http%3A%2F%2Fapache.arvixe.com%2F
2- abre el zip copia los archivos jar en tu carpeta libs. Puede encontrarlo si va a la parte superior de su proyecto, donde dice "Android", encontrará una lista cuando haga clic en él. Entonces,
Android -> Proyecto -> aplicación -> libs
Luego pon los frascos allí.
3- En build.gradle (Módulo: aplicación) agregue
compile fileTree(dir: 'libs', include: ['*.jar'])
en
dependency {
}
4- En la clase java agregue estas importaciones:
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;
import org.apache.http.params.CoreProtocolPNames;
HttpClient ya no se admite en sdk 23. La versión de Android 6.0 (API nivel 23) elimina la compatibilidad con el cliente HTTP Apache. Tienes que usar
android {
useLibrary 'org.apache.http.legacy'
.
.
.
y también agregue el siguiente fragmento de código en su dependencia:
// http solución final para el servicio web (incluida la carga de archivos)
compile('org.apache.httpcomponents:httpmime:4.3.6') {
exclude module: 'httpclient'
}
compile 'org.apache.httpcomponents:httpclient-android:4.3.5'
También lo ayudará mientras usa Use MultipartEntity para cargar archivos .
en API 22 quedaron obsoletos y en API 23 los eliminaron por completo, una solución alternativa simple si no necesita todas las cosas elegantes de las nuevas adiciones es simplemente usar los archivos .jar de Apache que se integraron antes de API 22, pero como archivos .jar separados:
1. http://hc.apache.org/downloads.cgi
2. download httpclient 4.5.1, the zile file
3. unzip all files
4. drag in your project httpclient-4.5.1.jar, httpcore-4.4.3.jar and httpmime-4.5.1.jar
5. project, right click, open module settings, app, dependencies, +, File dependency and add the 3 files
6. now everything should compile properly
Si desea importar alguna clase como:
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
Puede agregar la siguiente línea en build.gradle (dependencias de Gradle)
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.0'
implementation 'com.android.support:support-v4:27.1.0'
.
.
.
implementation 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
}
Simplemente puede agregar esto a las dependencias de Gradle:
compile "org.apache.httpcomponents:httpcore:4.3.2"
La versión de Android 6.0 (API nivel 23) elimina la compatibilidad con el cliente HTTP Apache. Por lo tanto, no puede usar esta biblioteca directamente en API 23. Pero hay una forma de usarla. Agregue useLibrary 'org.apache.http.legacy' en su archivo build.gradle como se muestra a continuación:
android {
useLibrary 'org.apache.http.legacy'
}
Si esto no funciona, puede aplicar el siguiente truco:
- Copie org.apache.http.legacy.jar, que se encuentra en / platform / android-23 / ruta opcional de su directorio SDK de Android a la carpeta app / libs de su proyecto.
- Ahora agregue archivos de compilación ('libs / org.apache.http.legacy.jar') dentro de la sección de dependencias {} del archivo build.gradle.
ApacheHttp Client se elimina en v23 sdk. Puede usar HttpURLConnection o un cliente Http de terceros como OkHttp.
ref: https://developer.android.com/preview/behavior-changes.html#behavior-apache-http-client
Simplemente use esto: -
android {
.
.
.
useLibrary 'org.apache.http.legacy'
.
.
.
}
HttpClient no es compatible con sdk 23 y 23+.
Si necesita usar en sdk 23, agregue el siguiente código a su gradle:
android {
useLibrary 'org.apache.http.legacy'
}
Funciona para mí. Espero útil para ti.
Si necesita sdk 23, agregue esto a su gradle:
android {
useLibrary 'org.apache.http.legacy'
}
Tienes que agregar solo una línea
useLibrary 'org.apache.http.legacy'
en build.gradle (Módulo: aplicación), por ejemplo
apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion "25.0.0"
useLibrary 'org.apache.http.legacy'
defaultConfig {
applicationId "com.avenues.lib.testotpappnew"
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:24.2.1'
testCompile 'junit:junit:4.12'
}
¿Qué API objetivo tienes dentro de tu proyecto? AndroidHttpClient
es solo para API Nivel 8 <. y por favor echa un vistazo aquí
disfruta tu código :)
Como se mencionó anteriormente, org.apache.http.client.HttpClient
ya no se admite en:
SDK (nivel de API) # 23.
Tienes que usar java.net.HttpURLConnection
.
Si desea hacer que el código (y la vida) más fácil cuando se utiliza HttpURLConnection
, aquí es una Wrapper
de esta clase que le permita realizar operaciones sencillas con GET
, POST
y PUT
utilizando JSON
, como por ejemplo, hacer una HTTP PUT
.
HttpRequest request = new HttpRequest(API_URL + PATH).addHeader("Content-Type", "application/json");
int httpCode = request.put(new JSONObject().toString());
if (HttpURLConnection.HTTP_OK == httpCode) {
response = request.getJSONObjectResponse();
} else {
// log error
}
httpRequest.close()
Sientase libre de usarlo.
package com.calculistik.repository;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/**
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
* <p>
* Copyright © 2017, Calculistik . All rights reserved.
* <p>
* Oracle and Java are registered trademarks of Oracle and/or its
* affiliates. Other names may be trademarks of their respective owners.
* <p>
* The contents of this file are subject to the terms of either the GNU
* General Public License Version 2 only ("GPL") or the Common
* Development and Distribution License("CDDL") (collectively, the
* "License"). You may not use this file except in compliance with the
* License. You can obtain a copy of the License at
* https://netbeans.org/cddl-gplv2.html or
* nbbuild/licenses/CDDL-GPL-2-CP. See the License for the specific
* language governing permissions and limitations under the License.
* When distributing the software, include this License Header
* Notice in each file and include the License file at
* nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this particular file
* as subject to the "Classpath" exception as provided by Oracle in the
* GPL Version 2 section of the License file that accompanied this code. If
* applicable, add the following below the License Header, with the fields
* enclosed by brackets [] replaced by your own identifying information:
* "Portions Copyrighted [year] [name of copyright owner]"
* <p>
* Contributor(s):
* Created by alejandro tkachuk @aletkachuk
* www.calculistik.com
*/
public class HttpRequest {
public static enum Method {
POST, PUT, DELETE, GET;
}
private URL url;
private HttpURLConnection connection;
private OutputStream outputStream;
private HashMap<String, String> params = new HashMap<String, String>();
public HttpRequest(String url) throws IOException {
this.url = new URL(url);
connection = (HttpURLConnection) this.url.openConnection();
}
public int get() throws IOException {
return this.send();
}
public int post(String data) throws IOException {
connection.setDoInput(true);
connection.setRequestMethod(Method.POST.toString());
connection.setDoOutput(true);
outputStream = connection.getOutputStream();
this.sendData(data);
return this.send();
}
public int post() throws IOException {
connection.setDoInput(true);
connection.setRequestMethod(Method.POST.toString());
connection.setDoOutput(true);
outputStream = connection.getOutputStream();
return this.send();
}
public int put(String data) throws IOException {
connection.setDoInput(true);
connection.setRequestMethod(Method.PUT.toString());
connection.setDoOutput(true);
outputStream = connection.getOutputStream();
this.sendData(data);
return this.send();
}
public int put() throws IOException {
connection.setDoInput(true);
connection.setRequestMethod(Method.PUT.toString());
connection.setDoOutput(true);
outputStream = connection.getOutputStream();
return this.send();
}
public HttpRequest addHeader(String key, String value) {
connection.setRequestProperty(key, value);
return this;
}
public HttpRequest addParameter(String key, String value) {
this.params.put(key, value);
return this;
}
public JSONObject getJSONObjectResponse() throws JSONException, IOException {
return new JSONObject(getStringResponse());
}
public JSONArray getJSONArrayResponse() throws JSONException, IOException {
return new JSONArray(getStringResponse());
}
public String getStringResponse() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuilder response = new StringBuilder();
for (String line; (line = br.readLine()) != null; ) response.append(line + "\n");
return response.toString();
}
public byte[] getBytesResponse() throws IOException {
byte[] buffer = new byte[8192];
InputStream is = connection.getInputStream();
ByteArrayOutputStream output = new ByteArrayOutputStream();
for (int bytesRead; (bytesRead = is.read(buffer)) >= 0; )
output.write(buffer, 0, bytesRead);
return output.toByteArray();
}
public void close() {
if (null != connection)
connection.disconnect();
}
private int send() throws IOException {
int httpStatusCode = HttpURLConnection.HTTP_BAD_REQUEST;
if (!this.params.isEmpty()) {
this.sendData();
}
httpStatusCode = connection.getResponseCode();
return httpStatusCode;
}
private void sendData() throws IOException {
StringBuilder result = new StringBuilder();
for (Map.Entry<String, String> entry : params.entrySet()) {
result.append((result.length() > 0 ? "&" : "") + entry.getKey() + "=" + entry.getValue());//appends: key=value (for first param) OR &key=value(second and more)
}
sendData(result.toString());
}
private HttpRequest sendData(String query) throws IOException {
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
writer.write(query);
writer.close();
return this;
}
}
Agregue estas dos líneas bajo dependencias
compile 'org.apache.httpcomponents:httpcore:4.4.1'
compile 'org.apache.httpcomponents:httpclient:4.5'
entonces
useLibrary 'org.apache.http.legacy'
bajo el androide
Otra forma es si tiene el archivo httpclient.jar , entonces puede hacer esto:
Pegue su archivo .jar en la "carpeta libs" de su proyecto. Luego, en gradle, agregue esta línea en su build.gradle (Módulo: aplicación)
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:23.0.0'
compile files('libs/httpcore-4.3.3.jar')
}
Error: (30, 0) Método DSL de Gradle no encontrado: 'classpath ()' Causas posibles:
Para Android API 28 y superior en Manifest.xml dentro de la etiqueta de la aplicación
<application
.
.
.
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
La estrella de HGTV, Christina Hall, revela que le diagnosticaron envenenamiento por mercurio y plomo, probablemente debido a su trabajo como manipuladora de casas.
Recientemente salió a la luz un informe policial que acusa a la estrella de 'Love Is Blind', Brennon, de violencia doméstica. Ahora, Brennon ha respondido a los reclamos.
Conozca cómo Wynonna Judd se dio cuenta de que ahora es la matriarca de la familia mientras organizaba la primera celebración de Acción de Gracias desde que murió su madre, Naomi Judd.
Descubra por qué un destacado experto en lenguaje corporal cree que es fácil trazar "tales paralelismos" entre la princesa Kate Middleton y la princesa Diana.
Los inodoros arrojan columnas de aerosol invisibles con cada descarga. ¿Como sabemos? La prueba fue capturada por láseres de alta potencia.
Air travel is far more than getting from point A to point B safely. How much do you know about the million little details that go into flying on airplanes?
The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!
¿Sigue siendo efectivo ese lote de repelente de insectos que te quedó del verano pasado? Si es así, ¿por cuánto tiempo?
Si este tráiler de pesadilla de la temporada más reciente de Great British Bake Off te asustó y te hizo no volver a ver el programa, es posible que tengas suerte: PBS no ha decidido si se transmitirá o no la última temporada en los Estados Unidos. actualización, para aquellos que no siguen sin aliento este tipo de drama de nicho: el presentador Paul Hollywood y la hermosa carpa llena de batidoras de colores pastel y cuadros se trasladaron de la BBC al Canal 4; Mary Berry, Sue Perkins y Mel Giedroyc renunciaron.
Foto: Netflix Oh, Hello On Broadway (Netflix): Después de llegar a Broadway el año pasado, los dos locos del Upper West Side interpretados por John Mulaney y Nick Kroll finalmente llegaron a Netflix. El especial consta del espectáculo en el escenario, algunos momentos entre bastidores y un invitado muy especial de “Too Much Tuna”.
¿Quiere probar un cepillo de dientes Sonicare sin gastar mucho dinero en uno de sus modelos favoritos de gama alta? Puede comprar un kit de la Serie 2 o Serie 3 por tan solo $ 30 hoy en Amazon. Haga clic aquí para ver la lista completa de modelos elegibles y tenga en cuenta que se descontarán $ 10 adicionales en su carrito.
Tapas elásticas de silicona de Tomorrow's Kitchen, paquete de 12 | $14 | Amazonas | Código promocional 20OFFKINJALids son básicamente los calcetines de la cocina; siempre perdiéndose, dejando contenedores huérfanos que nunca podrán volver a cerrarse. Pero, ¿y si sus tapas pudieran estirarse y adaptarse a todos los recipientes, ollas, sartenes e incluso frutas en rodajas grandes que sobran? Nunca más tendrás que preocuparte por perder esa tapa tan específica.
El equipo está a la espera de las medallas que ganó en los Juegos Olímpicos de Invierno de 2022 en Beijing, ya que se está resolviendo un caso de dopaje que involucra a la patinadora artística rusa Kamila Valieva.
Miles de compradores de Amazon recomiendan la funda de almohada de seda Mulberry, y está a la venta en este momento. La funda de almohada de seda viene en varios colores y ayuda a mantener el cabello suave y la piel clara. Compre las fundas de almohada de seda mientras tienen hasta un 46 por ciento de descuento en Amazon
El jueves se presentó una denuncia de delito menor amenazante agravado contra Joe Mixon.
El Departamento de Policía de Lafayette comenzó a investigar a un profesor de la Universidad de Purdue en diciembre después de recibir varias denuncias de un "hombre sospechoso que se acercaba a una mujer".
Al igual que el mundo que nos rodea, el lenguaje siempre está cambiando. Mientras que en eras anteriores los cambios en el idioma ocurrían durante años o incluso décadas, ahora pueden ocurrir en cuestión de días o incluso horas.
Estoy de vuelta por primera vez en seis años. No puedo decirte cuánto tiempo he estado esperando esto.
“And a river went out of Eden to water the garden, and from thence it was parted and became into four heads” Genesis 2:10. ? The heart is located in the middle of the thoracic cavity, pointing eastward.
Creo, un poco tarde en la vida, en dar oportunidades a la gente. Generosamente.