簡體   English   中英

如何使HttpServer識別Java中的特殊字符?

[英]How can I make HttpServer recognise special characters in Java?

我想用Java HttpServer進行一些SQL查詢,但似乎HttpServer無法識別我提交到瀏覽器的鏈接中的特殊字符:

[1]: http://localhost:8001/test?query=SELECT * WHERE{ ?s rdf:type ?o. }

我總是收到以下回復:

400 Bad Request
URISyntaxException thrown

這是我的服務器的代碼:

public class SimpleHttpServer 
{

public static void main(String[] args) throws Exception 
{

        dir = args[0];
        HttpServer server = HttpServer.create(new InetSocketAddress(8001), 0);
        server.createContext("/test", new MyHandler());
        server.setExecutor(null);
        server.start();
    }

    static class MyHandler implements HttpHandler {
        public void handle(HttpExchange t) throws IOException {
            String response ;
            System.out.println(t.getRequestURI().getQuery().toString().replaceAll("query=",   ""));
            response =   ExecuteHttpQuery.getInstance().httpQuery(t.getRequestURI().getQuery().toString().replaceAll("query=", "").toString(), dir) + "\n";
            t.sendResponseHeaders(200, response.length());
            OutputStream os = t.getResponseBody();
            os.write(response.getBytes());
            os.close();
        }
    }
}

我怎樣才能解決這個問題?

是的,某些字符在URL的某些部分無效。 除了我希望您只是在測試它,而不是將其實際用於任何實際操作,sql注入攻擊和所有方法 ),還需要使用URLEncoder首先對sql查詢進行編碼。

您永遠不要在URL中傳遞SQL查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM