2017-05-16 9 views
0

私はパラメータを追加しようとしていますが、ポストメソッドのリクエストのみを受け付けるページにリダイレクトしています。私はサーブレットでこのコードを使用していますが、URLに転送していません。ポストメソッドのURLにリダイレクトを送信

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    String url = "http://www.thisone.com"; 
    InputStream in = null; 
      try { 
        HttpClient client = new HttpClient(); 
        PostMethod method = new PostMethod(url); 

        //Add any parameter if u want to send it with Post req. 
        method.addParameter("User", "xyz"); 
        method.addParameter("Name", "abc"); 

        int statusCode = client.executeMethod(method); 
        System.out.println(statusCode); 
        if (statusCode != -1) { 
         response.sendRedirect(response.encodeRedirectURL(url)); 
         in = method.getResponseBodyAsStream(); 
        } 

       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
} 

答えて

0

この方法を使用してポスト方法でリダイレクトすることはできません。あなたができることは、クライアントへの応答を取得し、それに応じてロケーションヘッダーを設定することです。あなたの条件が満たされたら

:同じのための実装は以下の通りです

response.setStatus(307); 
response.addHeader("Location", "<url>"); 

も307ステータスコードの意味をチェックしてください。ここで

は、URLを受信すると、AJAXリクエストで開始し、目的のURLを取得するために、サーブレットをヒットjavascriptのコードは、あるHTMLフォームオブジェクトを作成し、値を設定し、フォームを送信...

<script> 
    var xhttp = new XMLHttpRequest(); 
    xhttp.onreadystatechange = function() { 
     if (this.readyState == 4 && this.status == 200) { 
      callURL(this.responseText); 
     } 
    }; 
    xhttp.open("GET", "TestServlet", true); 
    xhttp.send(); 

    function callURL(url){ 
     var form = document.createElement("form"); 
     form.setAttribute('method', 'POST'); 
     form.setAttribute('action', url); 
     form.setAttribute('id', 'frmProduct'); 
     form.style.display = 'none'; 

     var i = document.createElement('input'); 
     i.setAttribute('type', 'text'); 
     i.setAttribute('name', 'name'); 
     i.setAttribute('value', 'Neeraj'); 
     form.appendChild(i); 
     document.getElementsByTagName('body')[0].appendChild(form); 
     form.submit(); 
    } 
</script> 

以下はどうすればよい

@WebServlet("/TestServlet") 
public class TestServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    /** 
    * @see HttpServlet#HttpServlet() 
    */ 
    public TestServlet() { 
     super(); 
    } 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     String url = "http://www.thisone.com"; 
     PrintWriter out = response.getWriter(); 
     out.print(url); 
    } 
} 
+0

が、私はこの –

+0

は私がのsendRedirectがどのように機能するかを明確にしましょう使用してパラメータを渡す私のTestservletの実装です。 sendRedirectを実行すると、リクエストはクライアントに戻り、ブラウザのURLが変更されてリダイレクトされます。 クライアント側からリダイレクトしています。あなたができることは、クライアント側でURLを取得することです。 javascriptを使用してパラメータを渡してから、要求を目的のURLに投稿します。 同じものの実装を書いて欲しいと思ったら... –

+0

はい、助けてもらえますか。 –

関連する問題