2016-10-20 2 views
0

私がする必要があるのは、2つのパラメータで特定のURLにPOSTリクエストを送信することです。リクエストが送信されると、機能にアクセスできるようにユーザーをそのリンクにリダイレクトする必要があります。JAVA POST要求を受信して​​リダイレクトしますか?

はこれまでのところ、私は様々な例から行うために管理していることはこれです:

private void postRemoteAdvisoryLink() throws IOException { 
     URL obj = new URL(KdrmApplicationContext.getRemoteAdvisoryUrlPath()); 
     HttpURLConnection con = (HttpURLConnection) obj.openConnection(); 
     con.setConnectTimeout(60000); 
     con.setRequestMethod("POST"); 
     con.setRequestProperty("User-Agent", "Mozilla/5.0"); 
     con.setRequestProperty("Accept-Language", "en-US,en;q=0.5"); 

     // For post only - start 
     con.setDoOutput(true); 
     OutputStream os = con.getOutputStream(); 
     os.write(("?auth=ssor&TransportKey=" + ssorTransportKey).getBytes()); 
     os.flush(); 
     os.close(); 

     int responseCode = con.getResponseCode(); 
    } 

問題はOutputStreamのOS = con.getOutputStream()を実行しようとすると、今、私は接続時間を出すことです。ライン。また、依頼が完了したときにユーザーをリダイレクトする方法はまだ分かりません。

アイデア?

+0

コードでは、要求しているURLを決して指定しません。 ユーザーを別のページにリダイレクトするには、ユーザーにhttp応答でhttpコード301または302を使用する必要があります。 –

答えて

0

基本的なJava URLクラスを使用するには、HTTPプロトコルの詳細を手動で処理する必要があります。Apache Http Componentsのようなライブラリを使用する方がよいでしょう。 POST要求を含むいくつかの例はon their websiteです。

タイムアウトは、ホストが応答していないか、Javaアプリケーションが指定されたURLに接続できない(たとえば、プロキシ設定がないため)可能性があります。

回答に基づいてリクエストをリダイレクトする場合は、レスポンスヘッダーとhttpステータスを確認する必要があります。ステータスが302の場合は、作成するURLが含まれるLocationというヘッダーが必要ですへの別の要求。 OutputStreamを取得する前に、必ずContent-Lengthヘッダー(および理想的にはContent-Typeヘッダー)も設定してください。

関連する問題