2016-06-27 7 views
1

私はnanohttpdサーバーを実装しましたnano 私の目標は、私が持っている条件に基づいて別のドメインに要求を転送することです。nanoHttpdサーバーから別のドメインにリダイレクト

私のコードは、私が別のドメイン

それはhttps://www.google.com

にrediectsしかし、それは.Butがあるクライアント側からwww.google.comにrediectにリダイレクトしようとしたときに問題があるこの

package CreateServer; 

import java.io.File; 
import java.io.IOException; 
import java.util.Collections; 
import java.util.Iterator; 
import java.util.Map; 
import java.util.Properties; 

import fi.iki.elonen.NanoHTTPD; 

import javax.xml.ws.Response; 

public class App extends NanoHTTPD { 

    public App() throws IOException { 
     super(8080); 
     start(NanoHTTPD.SOCKET_READ_TIMEOUT, false); 
     System.out.println("\nRunning! Point your browers to http://localhost:8080/ \n"); 

    } 

    public static void main(String[] args) { 
     try { 
      new App(); 
     } catch (IOException ioe) { 
      System.err.println("Couldn't start server:\n" + ioe); 
     } 
    } 

    @Override 
    public Response serve(IHTTPSession session) { 
     String msg = "<html><body><h1>Hello server</h1>\n"; 
     Map<String, String> parms = session.getParms(); 
     if (parms.get("username") == null) { 
      msg += "<form action='?' method='get'>\n <p>Your name: <input type='text' name='username'></p>\n" + "</form>\n"; 
     } else { 
      msg += "<p>Hello, " + parms.get("username") + "!</p>"; 
     } 
     String websiteName="https://www.google.com"; 
     StringBuilder html=new StringBuilder(); 
     html.append("<html><head><meta http-equiv=\"refresh\" content=\"0; URL='"+websiteName+"'\" /></head>"); 
     html.append("<body></body></html>\n"); 

     // return new Response(Response.Status.OK, MIME_PLAINTEXT, null, 0); 
     return newFixedLengthResponse(msg + "</body></html>\n"); 
     // return newFixedLengthResponse(html.toString()); 
     // Response response=new Response(Response.IStatus.class.); 
     // response.sendRedirect("login.jsp"); 

     //return Response() 
    } 

} 

のようなものですそこにクライアント側以外のサーバー側に要求を送信する任意の正しい方法?????

私はこれをどのように行うことができますか?これを行う別の方法はありますか?助けてください。

答えて

4

以下のサンプルでは、​​ユーザーがsite.com/redirectmeを開こうとすると、Googleにリダイレクトされます。

@Override 
public Response serve(IHTTPSession session) { 

    switch (session.getUri()) { 

     case "/redirectme": 

      Response r = newFixedLengthResponse(Response.Status.REDIRECT, MIME_HTML, ""); 
      r.addHeader("Location", "http://google.com"); 
      return r; 
     default: 
      return super.serve(session); 
} 
関連する問題