我的应用程序正在使用HttpServletRequest发送Web服务请求。当我在ie11中运行我们的应用程序的请求时,我没有返回任何结果,但是当我从Firefox运行它时,我得到了结果。这就是aRequest.getHeader(“User-Agent”)当前值
Mozilla / 4.0(兼容; MSIE 7.0; Windows NT 6.1; WOW64; Trident / 7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.2; .NET CLR 1.1.4322; MS-RTC LM 8)
我需要将其更改为ie11 compatibilitybilty。它看起来像请求中的用户代理是ie7.0问题是我没有看到'setHeader'的任何选项。我只看到aRequest.setAttribute的选项我试过设置属性但是没有用
public final ActionForward execute(final ActionMapping aMapping,
final ClientForm aForm,
final HttpServletRequest aRequest,
final HttpServletResponse aResponse)
throws ServletException
{
try {
final ServletOutputStream out = aResponse.getOutputStream();
aResponse.setContentType("text/html");
processAjaxRequest(aMapping, aForm, aRequest, aResponse, out);
out.flush();
out.close();
}
public void processAjaxRequest(final ActionMapping aMapping,
final ClientForm aForm,
final HttpServletRequest aRequest,
final HttpServletResponse aResponse,
final ServletOutputStream out)
throws ServletException, IOException
{
String response = null;
boolean isValid = false;
if (isValid(aRequest, aForm)) {
response = "success";
isValid = true;
} else {
response = "fail";
isValid = false;
}
if (WebUtils.getParameter(aRequest, "format", "html").equals("json")) {
//Map<String,String> map = new HashMap<String,String>(1);
Map map = new HashMap(1);
map.put("status", isValid ? "ok" : "fail");
aResponse.setHeader("X-JSON", JSON.encode(map));
} else {
out.print(response);
}
}
答案 0 :(得分:0)
我的应用程序正在使用HttpServletRequest发送Web服务 请求。
您的申请是网络服务。 Webservice不发送请求,它接收来自客户端的请求。
HttpServletRequest是来自您的客户端的请求(在您的情况下是浏览器)。你不应该改变它,因为你只是把它改为只读#34;输入要处理的数据。
浏览器出于某些历史原因(more details here)发送此类用户代理。但是&#34;兼容; MSIE 7.0;&#34;用户代理请求与ie11的问题没有任何共同之处。
你应该调查更深层次的原因,为什么ie11不起作用。在浏览器中查看控制台(任何错误?)或调试服务代码。
我明白了,你写了回复&#34; out.print(回应);&#34;仅在&#34;否则&#34;你的病情,可能是一个原因。因此,如果条件为真,则您的代码不会发送正文(仅限&#34; X-JSON&#34;标题)。