Pregunta

Necesito hacer una solicitud de un servlet, pero también tengo que retener toda la información de la cabecera. Es decir en el objeto solicitud.

Por ejemplo, si hago algo como lo siguiente a partir del método doGet, hay una manera fácil de simplemente pasar esa información al objeto URL de conexión?

URL url = new URL();
URLConnection uc = url.openConnection();
uc.setDoOutput(true);
uc.setDoInput(true);
uc.setUseCaches(false);

uc.setRequestProperty("Content-type",
"application/x-www-form-urlencoded");

DataOutputStream dos = new DataOutputStream(uc.getOutputStream());
dos.writeBytes(strInEnc);
dos.flush();
dos.close();

InputStreamReader in = new InputStreamReader(uc.getInputStream());
int chr = in.read();
while (chr != -1) {
taResults.append(String.valueOf((char) chr));
chr = in.read(); 
¿Fue útil?

Solución

Utilice la método addRequestProperty de URLConnection.

Enumeration<?> names = req.getHeaderNames();
while (names.hasMoreElements()) {
  String key = (String) names.nextElement();
  Enumeration<?> values = req.getHeaders(key);
  while (values.hasMoreElements()) {
    uc.addRequestProperty(key, (String) values.nextElement());
  }
}

Vas a tener un conjunto similar de bucles si se utiliza HttpClient, a menos que se ha incorporado en el apoyo a paso a través de un ServletRequest. (Y si no es así, ¿por qué molestarse con un enorme conjunto de dependencias adicionales, y la API no estándar?)

Otros consejos

Puede enumerar todas las cabeceras con el método () request.getHeaderNames. Sin embargo, se recomienda utilizar el HttpClient en lugar de URLConnection para realizar la solicitud.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top