[英]how to access https sites in java
I have to access an https site through my java code. 我必须通过我的java代码访问https网站。 But it returns 401 response.
但它返回401响应。 I included my code below.
我在下面提供了我的代码。
try {
URL u = new URL(url);
HttpURLConnection http = (HttpURLConnection)u.openConnection();
http.setAllowUserInteraction(true);
http.connect();
String userpassword = "HP:M0lveau";
byte[] encoded = Base64.encodeBase64(userpassword.getBytes());
String encodedAuthorization = new String(encoded);
http.setRequestProperty("Authorization", "Basic " + encodedAuthorization);
InputStream is = http.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder stringBuilder = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
stringBuilder.append(line + "\n");
}
return stringBuilder.toString();
} catch (IOException ioe) {
logger.debug("fetchDataFromServer:IOException");
return null;
}
Please help as early as possible.. Thanks in advance.... 请尽早帮助..提前致谢....
401 response means that the request requires user authentication . 401响应意味着请求需要用户身份验证 。 LOOK here for help
在这里寻求帮助
Have something like 有类似的东西
public static String userNamePasswordBase64(String username, String password)
{
return "Basic " + base64Encode (username + ":" + password);
}
static public String base64Encode(String s)
{
ByteArrayOutputStream bout = new ByteArrayOutputStream();
Base64OutputStream out = new Base64OutputStream(bout);
try
{
out.write(s.getBytes());
out.flush();
} catch (IOException e)
{
}
return bout.toString();
}
and then use 然后使用
http.setRequestProperty ("Authorization",userNamePasswordBase64("HP","M01veau"));
http.connect();
Also check manually that these credentials are working fine on the given url. 还要手动检查这些凭据在给定URL上是否正常工作。 Also See this great tutorial
另见这篇精彩的教程
尝试在调用connect()之前设置Authorization标头
I got it.. This is my code. 我明白了..这是我的代码。
private static String fetchDataFromServer() throws HttpException, IOException, NoSuchAlgorithmException, KeyManagementException {
logger.trace("__ENTERING CluemasterData::fetchDataFromServer()");
try {
URL u = new URL("https://....");
HttpsURLConnection http = (HttpsURLConnection)u.openConnection();
Authenticator.setDefault( new MyAuthenticator() );
http.setAllowUserInteraction(true);
http.setRequestMethod("GET");
http.connect();
InputStream is = http.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder stringBuilder = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
{
stringBuilder.append(line + "\n");
}
return stringBuilder.toString();
}
catch (HttpException he) {
return null;
}
catch (IOException ioe) {
return null;
}
}
The class MyAuthenticator MyAuthenticator类
import java.net.Authenticator;
import java.net.PasswordAuthentication;
class MyAuthenticator extends Authenticator
{
/**
* Called when password authorization is needed.
* @return The PasswordAuthentication collected from the
* user, or null if none is provided.
*/
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication ( "username", "password".toCharArray() );
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.