Enviar solicitud HTTP GET con el encabezado
Desde mi aplicación de Android quiero solicitar una URL con parámetros GET y leer la respuesta. En la solicitud debo añadir un encabezado de x-zip
.
La URL es algo así como
- Colección con eliminación rápida / iteración / inserción que recicla objetos en los programas de Android / Java?
- Acceso puntero nulo: los datos variables sólo pueden ser nulos en este lugar
- Apache Commons IO en Android
- Cómo convertir los registros de base de datos en archivo csv en android?
- Android.os.NetworkOnMainThreadException usando rxjava en android
http://example.com/getmethod.aspx?id=111&method=Test
¿Puede alguien proporcionarme código para eso?
Dos cosas son importantes: que es una solicitud GET y contiene el encabezado de x-zip
.
EDITAR:
try { HttpClient client = new DefaultHttpClient(); String getURL = "http://example.com/getmethod.aspx?id=111&method=Test"; HttpGet get = new HttpGet(getURL); get.setHeader("Content-Type", "application/x-zip"); HttpResponse responseGet = client.execute(get); HttpEntity resEntityGet = responseGet.getEntity(); if (resEntityGet != null) { //do something with the response Log.i("GET ",EntityUtils.toString(resEntityGet)); } } catch (Exception e) { e.printStackTrace(); }
Intento con este código pero consigo el código con error del .net: Object reference not set to an instance of an object...
Pienso pero no estoy seguro esto si para la cabecera de x-zip
, es encabezado en mi código aceptable?
- ¿Cómo activar el botón "Compartir" en la aplicación Android?
- Configuración de un ancho de TextView en java
- Android Studio 3 no puede crear mi proyecto
- En caché JSON de webservice en android - patrón?
- Vista previa de la cámara Android con filtro de color
- No se puede resolver com.parse.ParseQueryAdapter
- ¿Cómo obtener el punto real cuando toco en la pantalla?
- La sección criticial de Java no parece funcionar
He aquí un extracto de código que estamos usando en nuestra aplicación para establecer los encabezados de las solicitudes. Observará que establecemos el encabezado CONTENT_TYPE sólo en un POST o PUT, pero también se utiliza el método general de adición de encabezados (a través de un interceptor de solicitud) para GET.
/** * HTTP request types */ public static final int POST_TYPE = 1; public static final int GET_TYPE = 2; public static final int PUT_TYPE = 3; public static final int DELETE_TYPE = 4; /** * HTTP request header constants */ public static final String CONTENT_TYPE = "Content-Type"; public static final String ACCEPT_ENCODING = "Accept-Encoding"; public static final String CONTENT_ENCODING = "Content-Encoding"; public static final String ENCODING_GZIP = "gzip"; public static final String MIME_FORM_ENCODED = "application/x-www-form-urlencoded"; public static final String MIME_TEXT_PLAIN = "text/plain"; private InputStream performRequest(final String contentType, final String url, final String user, final String pass, final Map<String, String> headers, final Map<String, String> params, final int requestType) throws IOException { DefaultHttpClient client = HTTPClientFactory.newClient(); client.getParams().setParameter(HttpProtocolParams.USER_AGENT, mUserAgent); // add user and pass to client credentials if present if ((user != null) && (pass != null)) { client.getCredentialsProvider().setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(user, pass)); } // process headers using request interceptor final Map<String, String> sendHeaders = new HashMap<String, String>(); if ((headers != null) && (headers.size() > 0)) { sendHeaders.putAll(headers); } if (requestType == HTTPRequestHelper.POST_TYPE || requestType == HTTPRequestHelper.PUT_TYPE ) { sendHeaders.put(HTTPRequestHelper.CONTENT_TYPE, contentType); } // request gzip encoding for response sendHeaders.put(HTTPRequestHelper.ACCEPT_ENCODING, HTTPRequestHelper.ENCODING_GZIP); if (sendHeaders.size() > 0) { client.addRequestInterceptor(new HttpRequestInterceptor() { public void process(final HttpRequest request, final HttpContext context) throws HttpException, IOException { for (String key : sendHeaders.keySet()) { if (!request.containsHeader(key)) { request.addHeader(key, sendHeaders.get(key)); } } } }); } //.... code omitted ....// }
Usted lo hace exactamente como usted demostró con esta línea:
get.setHeader("Content-Type", "application/x-zip");
Así que su encabezado está bien y el problema es alguna otra entrada para el servicio web. Usted querrá depurar eso en el lado del servidor.
- ¿Hay algún código necesario en Actividad para que ga_autoActivityTracking = true funcione para Google Analytics V4
- El proyecto no se construirá con Kotlin 1.1.3