我需要做的是将POST请求发送到具有两个参数的特定URL,并且在发送请求时,我需要将用户重定向到该链接,以便他能够访问功能。
到目前为止,我通过各种示例设法做到了这一点:
private void postRemoteAdvisoryLink() throws IOException {
URL obj = new URL(KdrmApplicationContext.getRemoteAdvisoryUrlPath());
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setConnectTimeout(60000);
con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", "Mozilla/5.0");
con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
// For post only - start
con.setDoOutput(true);
OutputStream os = con.getOutputStream();
os.write(("?auth=ssor&TransportKey=" + ssorTransportKey).getBytes());
os.flush();
os.close();
int responseCode = con.getResponseCode();
}
问题是现在我在尝试执行OutputStream os = con.getOutputStream()时遇到连接超时;线。此外,我仍然不知道如何在请求完成时重定向用户。
有什么想法吗?
答案 0 :(得分:0)
使用基本的Java URL类需要您手动处理HTTP协议的详细信息 - 最好使用像Apache Http Components这样的库,因为它们会为您处理底层协议。可以找到一些示例,包括POST请求on their website。
鉴于原始问题,Timeout可能与主机没有响应或您的Java应用程序无法连接到给定URL有关(例如,由于没有代理配置)。
如果要根据答案重定向请求,则需要检查响应标头和http状态 - 如果状态为302,则应该有一个名为Location的标头,其中包含您应该创建另一个标头的URL请求。 在获取OutputStream之前,还要确保设置Content-Length标头(理想情况下也是Content-Type标头)。