我想将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服务器。尽管如此,我希望这段代码非常安全,因此服务器不会对此代码产生负面影响。
答案 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();