java - not - Establecer Content-Type a application/json en el archivo jsp
httpheaders not working (3)
@Petr Mensik & kensen john
Gracias, no pude usar la directiva de página porque tengo que establecer un tipo de contenido diferente de acuerdo con algún parámetro de URL. Pegaré mi código aquí ya que es algo bastante común con JSON:
<%
String callback = request.getParameter("callback");
response.setCharacterEncoding("UTF-8");
if (callback != null) {
// Equivalent to: <@page contentType="text/javascript" pageEncoding="UTF-8">
response.setContentType("text/javascript");
} else {
// Equivalent to: <@page contentType="application/json" pageEncoding="UTF-8">
response.setContentType("application/json");
}
[...]
String output = "";
if (callback != null) {
output += callback + "(";
}
output += jsonObj.toString();
if (callback != null) {
output += ");";
}
%>
<%=output %>
Cuando se proporciona devolución de llamada, devuelve:
callback({...JSON stuff...});
con tipo de contenido "texto / javascript"
Cuando la devolución de llamada NO se proporciona, regresa:
{...JSON stuff...}
con tipo de contenido "application / json"
Se creo un archivo jsp que devuelve como respuesta alguna cadena json. Pero veo que Content-Type está configurado para txt automáticamente
Mi código jsp parece
<%@ page import="java.util.Random" %>
<%@ page language="java" %>
<%@ page session="false" %>
<%
String retVal = "// some json string";
int millis = new Random().nextInt(1000);
// System.out.println("sleeping for " + millis + " millis");
Thread.sleep(millis);
%>
<%=retVal%>
¿Cómo puedo hacer algo como
setHeader("Content-Type", "application/json");
¿en este ejemplo?
Prueba esta pieza de código, debería funcionar también
<%
//response.setContentType("Content-Type", "application/json"); // this will fail compilation
response.setContentType("application/json"); //fixed
%>
Puede hacerlo a través de la directiva de la página .
Por ejemplo:
<%@ page language="java" contentType="application/json; charset=UTF-8"
pageEncoding="UTF-8"%>
- contentType = "mimeType [; charset = characterSet]" | "text / html; charset = ISO-8859-1"
El tipo y el carácter MIME que codifica el archivo JSP se usa para la respuesta que envía al cliente. Puede usar cualquier tipo MIME o conjunto de caracteres que sean válidos para el contenedor JSP. El tipo MIME predeterminado es text / html, y el conjunto de caracteres predeterminado es ISO-8859-1.