Cómo configurar el encabezado Content-Type de una solicitud HttpClient
Programación de socket de comunicación de red Android Introducción a la programación http Tipo de solicitud de red htt Obtener solicitud Publicar dos tipos de solicitud Tipo GET Realizar datos Solicitud de datos Agregar lado URL pasado al servidor: El tipo POST solicita datos y coloca la solicitud HTTP La parte de la solicitud se pasa al servidor
Antes de realizar la programación HTTP, primero debe aclarar qué método utilizar para la solicitud de datos
Hay dos tipos de programación AndroidHttp: 1. HttpURLConnection 2. HttpClient;
p>Primero introduzca la solicitud de publicación de solicitud de obtención de HttpURLConnection:
[java] ver
plaincopyprint?
paramsValue de mapa privado;
String urlPath=null;
//Enviar
public void initData(){
urlPath="";
paramsValue =new HashMap();
paramsValue.put("nombre de usuario", "111");
paramsValue.put("contraseña", "222");
}
Mapa privado paramsValue;
String urlPath=null;
//Enviar
vacío público initData(){
urlPath="";
paramsValue=new HashMap();
paramsValue.put("nombre de usuario", "111");
paramsValue.put("contraseña", "222");
}
Obtener solicitud:
vista [java]
plaincopyprint?
sendGETRequest booleano privado (ruta de cadena, parámetros del mapa) arroja una excepción {
boolean Success=false;
// StringBuilder utiliza parámetros de dirección de solicitud de PIN de grupo
StringBuilder sb = new StringBuilder();
sb.append(path).append("?");
if (params != null & params.size() != 0) {
for (entrada Map.Entry: params.entrySet()) {
//Solicitar texto de parámetro URLEncoder se requiere codificación gbk/utf8
sb.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), "utf-8") ) ;
sb.append("amp;");
}
sb.deleteCharAt(sb.length() - 1)
;
}
URL url = nueva URL(sb.toString());
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); p>
p>
conn.setConnectTimeout(20000);
conn.setRequestMethod("GET");
if (conn.getResponseCode() == 200 ) {
éxito= verdadero;
}
if(conn!=null)
conn.disconnect(); p>
devuelve éxito;
}
sendGETRequest booleano privado (ruta de cadena, parámetros del mapa) arroja una excepción {
éxito booleano = falso
}
booleano éxito = falso
}
p>
// StringBuilder usa parámetros de dirección de solicitud combinados
StringBuilder sb = new StringBuilder();
sb.append(path).append("?");
if (params != null amp; amp; params.size() != 0) {
for (entrada Map.Entry: params.entrySet()) {
// El texto del parámetro de solicitud debe estar codificado en URLEncoder gbk/utf8
sb.append(entry.getKey()).append("=").append(URLEncoder.encode(entry) .getValue(), " utf-8"));
sb.append("amp;");
}
sb.deleteCharAt(sb .length() - 1 );
}
URL url = nueva URL(sb.toString());
HttpURLConnection conn = (HttpURLConnection) url .openConnection();
conn.setConnectTimeout(20000);
conn.setRequestMethod("GET");
if (conn.getResponseCode() = = 200) { p>
éxito= verdadero;
}
if(conn!=null)
conn.disconnect();
devolución exitosa;
}
Solicitud de publicación:
[java] ver
plaincopyprint? p>
sendPOSTRequest booleano privado (ruta de cadena, parámetros del mapa) arroja una excepción{
boolean Success=false;
>//StringBuilder usa parámetros de solicitud combinados
StringBuilder sb = new StringBuilder();
if(params!=null amp;?ms.size()!=0){
for (entrada Map.Entry: params.entrySet()) {
sb.append(entry.getKey()).append("=").append(URLEncoder. encode (entry.getValue(), "utf-8"));
sb.append("amp;");
}
sb. (sb.length()-1);
}
//contenido del cuerpo de la solicitud de entidad
//texto codificación UTF-8 nombre de usuario= E4B8ADE59BBDamp; =123
byte[] entidad = sb.toString().getBytes();
URL url = nueva URL(ruta);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(2000);
//Establecer estilo POST
conn.setRequestMethod(" POST") ;
//Las solicitudes de publicación pueden usar el almacenamiento en caché
// urlConn.setUseCaches(false);
//Para generar datos, debe configurar p>
conn.setDoOutput(true);
//Configurar esta conexión Aplicación de configuración de tipo de contenido/x-www-form-urlencoded
//Establecer tipo de contenido obtiene el flujo de entrada para facilitar el envío de información al servidor
//Se debe configurar la solicitud POST
conn.setRequestProperty("Content-Type", "application/x-www- form- urlencoded");
conn.setRequestProperty("Content-Length", entidad.length "");
// Tenga en cuenta que Connection.getOutputStream se conecta implícitamente
OutputStream out = conn.getOutputStream();
//Escribir valor del parámetro
out.write(entidad);
//Actualizar, Cerrar
out.flush();
out.close();
if (conn.getResponseCode() == 200) {
éxito= verdadero;
}
if(conn!=null)
conn.disconnect();
regresar éxito;
}
sendPOS booleano privado
TRequest(Ruta de cadena, parámetros de mapa) arroja una excepción{
boolean Success=false
//StringBuilder usa agrupación para combinar parámetros de solicitud
StringBuilder sb = new StringBuilder ();
if(params!=null amp;?ms.size()!=0){
for (entrada Map.Entry: params.entrySet()) {
sb.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), "utf-8"));
sb.append("amp;");
}
sb.deleteCharAt(sb.length()-1); / p>
//Contenido del cuerpo de la solicitud de entidad
//Texto codificación UTF-8 nombre de usuario=E4B8ADE59BBDamp contraseña=123
byte[] entidad = sb.toString( ) .getBytes();
URL url = nueva URL(ruta);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
setConnectTimeout (2000);
//Establecer el método POST
conn.setRequestMethod("POST");
// Las solicitudes de publicación pueden utilizar el almacenamiento en caché
// urlConn.setUseCaches(false);
//Para generar datos, debe configurarlos
conn.setDoOutput(true);
//Configurar esta conexión Aplicación de configuración del tipo de contenido/x-www-form-urlencoded
//Establecer el tipo de contenido para obtener el flujo de entrada para facilitar el envío de información al servidor
//Solicitud POST Asegúrese de configurar
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); .setRequestProperty("Content-Length", entidad.length "");
// Tenga en cuenta que Connection.getOutputStream conecta implícitamente
OutputStream out = conn.getOutputStream();
// Escribir valores de parámetros
out.write(entity);
//Actualizar, cerrar
out.flush();
out.close();
if (conn.getResponseCode() == 200) {
éxito= true;
}
si(con
n!=null)
conn.disconnect();
retorno exitoso;
}
Introducción al estilo HttpClient en comparación con HttpURLConnectionHttpClient encapsulación Para un ejemplo más simple y fácil de usar:
Obtener solicitud:
[java] ver
plaincopyprint?
público String getRequest (String UrlPath, parámetros de mapa){
String content=null;
StringBuilder buf = new StringBuilder();
if(params!=null amp; ?ms.size()!=0){
for (entrada Map.Entry: params.entrySet()) {
buf.append(entry.getKey()) ). append("=").append(URLEncoder.encode(entry.getValue(), "utf-8"));
buf.append("amp;");
}
buf.deleteCharAt(buf.length()-1);
}
content= buf.toString();
HttpClient httpClient = nuevo DefaultHttpClient();
HttpGet getMethod = nuevo HttpGet(content);
Respuesta HttpResponse = nulo;
prueba {
respuesta = httpClient.execute(getMethod);
} catch (ClientProtocolException e) {
e.printStackTrace();
} captura ( IOException e) {
e.printStackTrace();
}catch (Excepción e) {
e.printStackTrace();
}
if (respuesta!=nullamp;amp;response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
intenta {
contenido = EntityUtils.toString(response.getEntity());
} catch (ParseException e) {
e.printStackTrace();
} catch ( IOException e) {
e.printStackTrace();
}
}
devolver contenido;
}
getRequest de cadena pública (ruta de URL de cadena, par de mapa
ams){
String content=null;
StringBuilder buf = new StringBuilder();
if(params!=null amp;?ms.size( )!=0){
for (entrada Map.Entry: params.entrySet()) {
buf.append(entry.getKey()).append("=" ).append(URLEncoder.encode(entry.getValue(), "utf-8"));
buf.append("amp;"); >
buf.deleteCharAt(buf.length()-1);
}
content= buf.toString();
HttpClient httpClient = new DefaultHttpClient();
HttpGet getMethod = new HttpGet(content);
respuesta HttpResponse = null;
prueba {
respuesta = httpClient.execute(getMethod);
} captura (ClientProtocolException e) {
e.printStackTrace()
} captura (IOException e) {
e.printStackTrace();
}catch (Excepción e) {
e.printStackTrace();
}
if (respuesta!=null&response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
prueba {
content = EntityUtils.toString (respuesta .getEntity());
} captura (ParseException e) {
e.printStackTrace();
} captura (IOException e) {
e.printStackTrace();
}
}
devolver contenido;
}
Solicitud de estilo Postt:
[java] ver
plaincopyprint?
sendPOSTRequestHttpClient booleano privado (ruta de cadena, parámetros de mapa) arroja una excepción { p>
boolean Success = false;
//Encapsular parámetros de solicitud
Par de lista = new ArrayList();
if (params != null amp; amplificador;!params.isEmpty())
{
for (entrada Map.Entry: params.entrySet()) {
pair.add(new BasicNameValuePair(entry.getKey(), entrada
.getValue()));
}
}
// Solicitar cambios de parámetros en el cuerpo de la solicitud
UrlEncodedFormEntity uee = new UrlEncodedFormEntity (par, "utf-8");
// Utilice el objeto HttpPost para establecer la ruta URL de envío
HttpPost post = new HttpPost(path);
/ /Enviar el cuerpo de la solicitud
post.setEntity(uee);
//Crear una imagen del navegador para enviar una imagen POST al servidor y devolver un mensaje de respuesta p>
DefaultHttpClient dhc = new DefaultHttpClient();
Respuesta HttpResponse = dhc.execute(post);
if (response.getStatusLine().getStatusCode() == 200) {
éxito = verdadero;
}
devolución exitosa;
}
envío booleano privadoPOSTRequestHttpClient (Ruta de cadena, parámetros del mapa) lanza una excepción {
boolean Success = false;
//Encapsular parámetros de solicitud
Par de lista = new ArrayList();
if ( params != null amp; !params.isEmpty()) {
for (entrada Map.Entry: params.entrySet()) {
pair.add(new BasicNameValuePair (entry.getKey(), entrada
.getValue()));
}
}
// Cambio de parámetros de solicitud Cuerpo de la solicitud
UrlEncodedFormEntity uee = new UrlEncodedFormEntity(pair, "utf-8");
//Utilice el objeto HttpPost para establecer la ruta URL de envío
HttpPost post = new HttpPost(path);
//Enviar cuerpo de solicitud
post.setEntity(uee);
// Crear icono de navegador para POST en el servidor Enviar y devolver mensaje de respuesta
DefaultHttpClient dhc = new DefaultHttpClient();
Respuesta HttpResponse = dhc.execute(post);
if (respuesta.getStatusLine( ).getStatusCode() == 200) {
>éxito = verdadero;
}
devuelve éxito;
}