向服务器发送Java GET参数(不挂起)
我想向服务器发送GET参数。我确实不需要InputStream(如下所示),但请求实际上是在我调用“getInputStream”时发送的。问题是,此代码挂起在getInputStream上。超时不适用,因为连接已实际建立(未超时) 我需要更改什么,以便在不挂起的情况下向服务器发送干净的GET向服务器发送Java GET参数(不挂起),java,http,urlconnection,Java,Http,Urlconnection,我想向服务器发送GET参数。我确实不需要InputStream(如下所示),但请求实际上是在我调用“getInputStream”时发送的。问题是,此代码挂起在getInputStream上。超时不适用,因为连接已实际建立(未超时) 我需要更改什么,以便在不挂起的情况下向服务器发送干净的GET URL url = new URL("http://localhost:8888/abc?message=abc"); //[edit] URLConnection uc = url.openConnec
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服务器。尽管如此,我还是希望这段代码非常安全,这样服务器就不会对这段代码产生负面影响。我基本上放弃了使用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();
尝试uc.connect()
而不是getInputStream()?但不确定是什么原因导致了挂断。uc.connect()
似乎没有建立连接(netcat没有显示任何内容)。当我调用getInputStream时,数据被传输并显示在netcat中。我认为它是挂起的,因为双方都没有关闭连接。它正在阻止等待netcat的输入。我的目的只是传递GET参数并关闭连接(在同一线程中)。