如何让HttpServer识别Java中的特殊字符?
我想用Java HttpServer进行一些SQL查询,但HttpServer似乎无法识别我提交到浏览器中的链接中的特殊字符:如何让HttpServer识别Java中的特殊字符?,java,httpserver,simplehttpserver,Java,Httpserver,Simplehttpserver,我想用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 stati
[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查询。是的,URL的某些部分中存在某些无效字符。(除此之外,我希望您只是在测试,而不是实际使用它进行任何真实的sql注入攻击等),您需要首先使用URLEncoder对sql查询进行编码。您可能希望对链接进行urlencode,因为它包含空格和其他符号。看,我还没有弄清楚如何将URLConcoder和解码器与HTTPServer集成有任何示例吗?@NabilCHOUAIEB-您只需在客户端对查询进行url编码,然后在服务器上对查询进行url解码。哪个部分不工作?服务器部分没有运行,我希望客户端能够像这样发布URL*其中{s rdf:type?o.}只需在他的浏览器上,服务器必须能够识别所有具有请求的字符并发回响应我应该做什么?