将Java GET参数发送到服务器(不挂起)

时间:2013-11-22 22:02:21

标签: java http urlconnection

我想将GET参数发送到服务器。我真的不需要InputStream(下面),但是在我调用“getInputStream”时实际发送了请求。问题是,此代码挂起在getInputStream上。超时不适用,因为实际建立了连接(没有超时)。

我需要更改哪些内容,以便在不挂起的情况下向服务器发送干净的GET?

URL url = new URL("http://localhost:8888/abc?message=abc"); //[edit]
URLConnection uc = url.openConnection();
uc.setRequestProperty("Accept-Charset", "UTF-8");
uc.setConnectTimeout(1000);
InputStream in = uc.getInputStream();
in.close();

如果重要,我正在使用netcat -l作为服务器进行测试,而不是使用实际的Web服务器。尽管如此,我希望这段代码非常安全,因此服务器不会对此代码产生负面影响。

1 个答案:

答案 0 :(得分:0)

我基本上放弃了使用URLConnection并编写代码来使用套接字。我仍然愿意改进,轻量级发布到Web服务器非常有用。

        URL u = new URL("http://localhost:8888/abc?message=abc");
        String get = "";
        if (u.getPath() != null)
            get += u.getPath();
        if (u.getQuery() != null)
            get += "?" + u.getQuery();
        if (u.getRef() != null)
            get += "#" + u.getRef();

        Socket socket = new Socket();
        socket
                .connect(new InetSocketAddress(u.getHost(), u.getPort()),
                        750);

        OutputStream out = socket.getOutputStream();
        out.write(("GET " + get + "\n\n").getBytes());
        out.close();