[英]HTTPS SSL GET in java request fails
當我使用http協議請求某些內容時,我的代碼有效,並且得到了預期的響應。 但是,當我創建一個可與https一起使用的版本時,出現了SSL錯誤。 我已經按照此問題中的步驟進行操作,並且我認為我不需要此問題中所述的密鑰/信任管理器。 請參見下面的代碼。 我將key和trustmanager設置為null,因此java將采用默認值。 我似乎沒有在該步驟上出錯,該錯誤發生在inputStream = connection.getInputStream();
行上inputStream = connection.getInputStream();
。 我不知道我還需要添加/設置scure連接嗎?
private String runSecureService(URL url)
{
HttpsURLConnection connection = null;
InputStream inputStream = null;
SSLContext sslContext = null;
try
{
sslContext = SSLContext.getInstance("SSL");
}
catch (NoSuchAlgorithmException e)
{
//this exception doesn't occur
}
try
{
sslContext.init(null, null, null);
}
catch (KeyManagementException e)
{
//this exception doesn't occur
}
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
try
{
connection = (HttpsURLConnection) url.openConnection();
connection.setRequestProperty("Authorization", clientCredentials.getBase64Authentication());
!-----> inputStream = connection.getInputStream(); <------!
InputStreamReader responseReader = new InputStreamReader(inputStream);
//Read, print and return the response.
...
return response;
}
catch (IOException e)
{
//do stuff...
}
finally
{
//close connection and inputstream...
}
}
這是錯誤:
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at sun.security.ssl.InputRecord.handleUnknownRecord(Unknown Source)
at sun.security.ssl.InputRecord.read(Unknown Source)
at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
如果嘗試發出HTTPS請求,但連接到遠程服務器上的HTTP端口,則會收到此消息。
可能是您在請求中為HTTPS使用了錯誤的端口號...或服務器配置錯誤,並且在應該是HTTPS端口的位置上具有HTTP連接偵聽器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.