2016-05-27 6 views
1

iは、POST HTTPリクエストを送信するには、このコードを使用します。JavaのHTTPリダイレクト

String url1 = "URL1"; 
String url2 = "URL2"; 
URL obj = new URL(url1); 
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection(); 
this.setHeader(con,urlParameters.length()); 
// Send post request 
con.setDoOutput(true); 
DataOutputStream wr = new DataOutputStream(con.getOutputStream()); 
wr.writeBytes(urlParameters); 
wr.flush(); 
wr.close(); 

URL1がダウンしている場合、私はURL2へのリダイレクトを行うことができますどのように?

+1

は、[この](http://www.mkyong.com/java/java-httpurlconnection-follow-redirect-example/)あなたが言及したような状況を処理することは非常に完全なリソースです。 –

答えて

0

obj.openConnection()は、接続が確立できない場合に例外をスローする必要があります。私はあなたが関数をこの例外をスローすると仮定します。代わりにそれをキャッチして再試行することができます。接続からの書き込みと読み取りも例外をスローする可能性があることに注意してください。投稿すると、あなたのニーズにそれをリファクタリングするには、このコードを試してみてください

URL obj; 
HttpsURLConnection con = null; 
try 
{ 
    obj = new URL(url1); 
    con = (HttpsURLConnection) obj.openConnection(); 
} 
catch(Exception e) 
{ 
    System.out.println("Error, redirecting to url 2"); 
    e.printStackTrace(); 

    try 
    { 
     obj = new URL(url2); 
     con = (HttpsURLConnection) obj.openConnection(); 
    } 
    catch(Exception e) 
    { 
     System.out.println("Error, url2 failed"); 
     throw e; // This will make your function throw an exception when both urls are down. 
    } 
} 
+0

最初のキャッチブロックにurl2を挿入するか、またはif(con == null)ブロックで囲みます。 – user3745362

0

それらのそれぞれは、(再度試して、または発信者が問題を処理させるために投げる)処理する方法を考えてみて。 post data in java console application

URL serverUrl = 
      new URL("http://localhost:1611/POST/othersite.aspx"); 
    HttpURLConnection urlConnection = (HttpURLConnection)serverUrl.openConnection(); 
    urlConnection.setDoOutput(true); 
    urlConnection.setRequestMethod("POST"); 
    Boolean isUrl1Down=false; 
    try { 
     BufferedWriter httpRequestBodyWriter = new BufferedWriter(new OutputStreamWriter(urlConnection.getOutputStream())); 
     httpRequestBodyWriter.write("userName=Johnny+Jacobs&password=1234"); 
     httpRequestBodyWriter.close(); 
    }catch (IOException ie){ 
     isUrl1Down=true; 
    } 
    if(isUrl1Down){ 
     System.out.println("Try with secound URL"); 
    } 
    // Reading from the HTTP response body 
    Scanner httpResponseScanner = new Scanner(urlConnection.getInputStream()); 
    while(httpResponseScanner.hasNextLine()) { 
     System.out.println(httpResponseScanner.nextLine()); 
    } 
    httpResponseScanner.close(); 
関連する問題