程序执行带有基本授权的http帖子很好但是当帖子完成后,页面会被重定向到成功页面。由401授权导致的重定向失败。
final URLConnection conn = url.openConnection();
conn.setDoOutput(true);
conn.setRequestProperty("Authorization", "basic " +base64);
wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
该行
rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
由于401授权失败,失败...
我也尝试过添加
conn.setRequestProperty("Authorization", "basic " +base64);
后
wr.flush();
我收到“已经连接”的错误。显然,我设置的授权不会影响重定向。非常感谢任何解决这个问题的方法。
答案 0 :(得分:1)
您可以尝试两种选择:
setDefaultRequestProperty
(请参阅http://download.oracle.com/javase/1.5.0/docs/api/java/net/URLConnection.html#setDefaultRequestProperty%28java.lang.String,%20java.lang.String%29)方法设置授权标题。答案 1 :(得分:1)
这是解决此问题的其他任何人的工作解决方案。再次感谢Femi提供解决方法的想法。
URL url = new URL(page);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setInstanceFollowRedirects(false);
conn.setDoOutput(true);
conn.setRequestProperty("Authorization", "basic " +base64);
wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
if(conn.getResponseCode() == HttpURLConnection.HTTP_MOVED_TEMP){
url = new URL(conn.getHeaderField("Location"));
conn = (HttpURLConnection)url.openConnection();
conn.setRequestProperty("Authorization", "basic " +base64);
}
rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));