Cómo utilizar HttpClient para conectarse a datos de red en el desarrollo de Android
Acceso a la red HttpClient
1. Acceso a la red HttpClient:
(1) Introducción:
1. , se puede lograr el acceso a la red. En Android, HttpClient se integra con éxito, por lo que puede usar HttpClient directamente para acceder a la red en Android.
2. En comparación con HttpURLConnection, HttpClient encapsula uniformemente las operaciones de flujo de entrada y salida en las clases HttpGet, HttpPost y HttpRequest.
HttpClient: objeto de conexión de red;
HttpGet: representa el envío de una solicitud GET;
HttpPost: representa el envío de una solicitud POST; HttpResponse: representa un objeto que maneja las respuestas del servidor.
Objeto HTTPEntity: este objeto contiene todo el contenido devuelto por el servidor.
3. Pasos de uso: (Seis pasos) Puntos clave
Crear un objeto HttpClient: se obtiene al crear una instancia de DefaultHttpClient;
Crear un objeto HttpGet o HttpPost: se obtiene al crear una instancia HttpGet o HttpPost, y el parámetro del constructor es urlstring (es decir, la dirección URL de red a la que se debe acceder). También puede agregar parámetros de solicitud llamando al método setParams();
Llame al método ejecutar() del objeto HttpClient. El parámetro es el objeto HttpGet o HttpPost recién creado y el valor de retorno es HttpResponse. object;
Obtenga si el estado de respuesta del servidor es 200 mediante el método getStatusLine() y el método getStatusCode() en el objeto de respuesta.
Llame al método getEntity() del objeto HttpResponse y devuelva el objeto HttpEntity. Este objeto contiene todo el contenido devuelto por el servidor.
Utilice el método toString() o toByteArray() de EntityUtils para procesar el objeto HttpEntity, u opere el objeto HttpEntity a través de la secuencia IO.
(2) Encapsular la clase de herramienta HttpClientHelper:
clase pública HttpClientHelper {
pública estática HttpClient checkNetwork(String url) {
HttpClient httpClient = nuevo DefaultHttpClient();
Solicitud HttpGet = nuevo HttpGet(url);
HttpResponse httpResponse = null;
prueba {
httpResponse = httpClient.execute(solicitud);
if (httpResponse.getStatusLine().getStatusCode() == 200) {
devuelve httpClient;
}
} captura (ClientProtocolException e) {
e.printStackTrace();
} captura (IOException e) {
e .printStackTrace();
}
return null;
}
/**
* Función : implementar el acceso de red a los archivos y almacenar los datos obtenidos en el flujo de archivos
*
* @param url
*: dirección URL para acceder a la red
* @return inputstream
*/
flujo de entrada estático público loadFileFromURL(String url) {
HttpClient httpClient = new DefaultHttpClient();
HttpGet requestGet = new HttpGet(url);
HttpResponse httpResponse
prueba {
httpResponse = httpClient.execute(requestGet) ;
if (httpResponse.getStatusLine().getStatusCode() == 200) {
entidad HTTPEntity = httpResponse.getEntity();
devolver entidad. getContent();
}
} captura (Excepción e) {
e.printStackTrace();
}
return null;
}
/**
* Función: implementar el acceso de red a los archivos y almacenar los datos obtenidos en una matriz de bytes
*
* @param url
*: dirección URL para acceder a la red
* @return byte[]
*/
pub
lic byte estático[] loadByteFromURL(String url) {
HttpClient httpClient = new DefaultHttpClient();
HttpGet requestGet = new HttpGet(url);
intenta {
HttpResponse httpResponse = httpClient.execute(requestGet);
if (httpResponse.getStatusLine().getStatusCode() == 200) {
HttpEntity httpEntity = httpResponse.getEntity();
return EntityUtils.toByteArray(httpEntity);
}
} catch (Excepción e) {
e.printStackTrace();
System.out.println("====gt;" e.toString());
}
return null;
}
/**
* Función: implementar el acceso de red a archivos y devolver una cadena
* p >
* @param url
*: Dirección URL para acceder a la red
* @return String
*/
cadena estática pública loadTextFromURL(String url) {
HttpClient httpClient = new DefaultHttpClient();
HttpGet requestGet = new HttpGet(url);
prueba {
p>
HttpResponse httpResponse = httpClient.execute(requestGet);
if (httpResponse.getStatusLine().getStatusCode() == 200) {
HttpEntity httpEntity = httpResponse. getEntity();
return EntityUtils.toString(httpEntity, "utf-8");
}
} catch ( Excepción e) {
e.printStackTrace();
}
return null;
}
/**
* Función: para lograr el acceso de red a los archivos, primero envíe los datos al servidor mediante el método "GET" y luego devuelva los datos correspondientes
*
* @param url
*: dirección URL para acceder a la red
* @param params
* String url: parámetros que deben pasarse al servidor al acceder a la URL.
* El formato del segundo parámetro es: nombre de usuario=wangxiangjunamp contraseña=123456
* @return byte[]
*/
byte estático público[] doGetSubmit(String url, String params) {
HttpClient httpClient = new DefaultHttpClient();
HttpGet requestGet = new HttpGet(url "?" parámetros)
pruebe {
HttpResponse httpResponse = httpClient.execute(requestGet);
if (httpResponse.getStatusLine().getStatusCode() == 200) {
HttpEntity httpEntity = httpResponse.getEntity();
return EntityUtils.toByteArray(httpEntity);
}
} catch (Excepción e ) {
e.printStackTrace();
}
return null;
}
/ * *
* Función: para lograr el acceso de red a los archivos, primero envíe los datos al servidor mediante el método "POST" y luego devuelva los datos correspondientes.
*
* @param url
*: Dirección URL para acceder a la red
* @param params
* String url: Parámetros a los que se debe pasar el servidor al acceder a la URL.
El segundo parámetro es: Listlt; NameValuePairgt;
* @return byte[]
*/
byte estático público[] doPostSubmit(String url, Listlt; NameValuePairgt; params) {
HttpClient httpClient = new DefaultHttpClient();
HttpPost requestPost = new HttpPost(url);
prueba {
requestPost.setEntity(new UrlEncodedFormEntity(params, "utf-8"));
HttpResponse httpResponse = httpClient.execute(requestPost);
if (httpResponse.getStatusLine( ) .getStatusCode() == 200) {
HttpEntity httpEntity = httpResponse.getEntity();
return EntityUtils.toByteArray(httpEntity);
}< / p>
} catch (Excepción e) {
e.printStackTrace();
}
return null;
}
/**
* Función: para lograr el acceso de red a los archivos, primero envíe los datos al servidor a través del método "POST" y luego devuelva los datos correspondientes
*
* @param url
*: dirección URL para acceder a la red
* @param params
* String URL: acceda a los parámetros de la URL que deben pasarse al servidor.
Maplt; String, Objectgt;
* @return byte[]
*/
byte estático público[] doPostSubmit(String url, Maplt; String, Objectgt ; parámetros) {
HttpClient httpClient = nuevo DefaultHttpClient();
HttpPost requestPost = nuevo HttpPost(url);
Listlt; parámetros BasicNameValuePairgt; ; BasicNameValuePairgt ();
prueba {
if (params != null) {
for (Map.Entrylt; String, Objectgt; entrada: params .entrySet()) {
Clave de cadena = entrada.getKey();
Valor de cadena = entrada.getValue().toString();
BasicNameValuePair nameValuePair = new BasicNameValuePair(
clave, valor);
parameters.add(nameValuePair);
}
}
requestPost
.setEntity(new UrlEncodedFormEntity(parameters, "utf-8"));
HttpResponse httpResponse = httpClient.execute(requestPost);
if (httpResponse.getStatusLine().getStatusCode() == 200) {
HttpEntity httpEntity = httpResponse.getEntity();
return EntityUtils.toByteArray(httpEntity);
}
} captura (Excepción e) {
e.printStackTrace();
}
retorno nulo;
}
}