2016-05-13 5 views
-1

私のアプリケーションはHttpServletRequestを使用してWebサービスリクエストを送信しています。 ie11で私たちのアプリケーションからのリクエストを実行すると返される結果は得られませんが、Firefoxから実行すると結果が返ってきます。これは、aRequest.getHeader( "User-Agent")現在の値です。HttpServletRequestのユーザーエージェントを変更するには?

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互換に変更してください。リクエストのユーザーエージェントがie7.0のように見えますが、問題は「setHeader」のオプションが表示されません。私は

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

「HttpServletRequest」を使用しているとはどういう意味ですか?そのオブジェクトはサーブレット自体によって作成されます。あなたが実際に呼んでいるもののコードサンプルを提供できますか? – SanF

+0

コードサンプルを追加しました – rtd353

答えて

0

私のアプリケーションは、Webサービスに リクエストを送信するためのHttpServletRequestを使用している私は属性を設定しようとしたが、それはうまくいきませんでしたaRequest.setAttributeためのオプションを参照してください。

あなたのアプリケーションはWebサービスです。 Webサービスは要求を送信せず、クライアントから要求を受け取ります。

HttpServletRequestは、お客様のクライアント(お客様の場合はブラウザ)からのリクエストです。あなたはそれを変更すべきではありません。サーブレットのためには、それは単なる「読み込み専用」の入力データです。

ブラウザは、歴史的な理由で(more details here)そのようなユーザーエージェントを送信します。しかし、「互換性があり、MSIE 7.0」ユーザーエージェントの要求では、ie11の問題と共通点はありません。

なぜ、ie11が機能しないのか、より深刻な理由を調査する必要があります。ブラウザでコンソールを見てください(エラーがありますか?)、またはサービスコードをデバッグしてください。

私は、あなたが "out.print(response);というレスポンスを書いているのを見ます。あなたの状態の "他の"ケースでのみ、それは理由かもしれません。したがって、条件がtrueの場合、コードは本文を送信しません(「X-JSON」ヘッダーのみ)。

関連する問題