2014-04-27 17 views
7

Đôi khi mã bên dưới không thành công và đôi khi nó hoạt động. Tôi đang sử dụng Java8. Nó là một vấn đề phía máy chủ?SSLException ngẫu nhiên Phiên bản không được hỗ trợ Không xác định-0.0

Ngoại lệ trong chuỗi "chính" javax.net.ssl.SSLException: Phiên bản bản ghi không được hỗ trợ Unknown-0.0.

EDIT: Tôi hạ cấp xuống JDK7 từ JDK8 và nó hoạt động. Giải pháp duy nhất tôi thấy rằng công trình.

public static void main(String[] args) throws Exception { 
    URL u = new URL("https://c********.web.cddbp.net/webapi/xml/1.0/"); 
    HttpURLConnection connection = (HttpURLConnection) u.openConnection(); 
    connection.setDoOutput(true); 
    connection.setDoInput(true); 
    connection.setInstanceFollowRedirects(false); 
    connection.setRequestMethod("POST"); 
    connection.setRequestProperty("Content-Type", "text/plain"); 
    connection.setRequestProperty("charset", "utf-8"); 
    connection.setRequestProperty("Content-Length", "" + 140); 
    connection.setUseCaches(false); 
    DataOutputStream wr = new DataOutputStream(connection.getOutputStream()); 
} 
+0

Tôi không thể sao chép, nhưng không có JDK8. Vui vì nó hoạt động trong JDK7. – cweichen

+0

Có, vấn đề này xảy ra thường xuyên với JDK8, không phải với JDK7. –

Trả lời

7

Tôi nhận được thông báo lỗi tương tự trong cài đặt java mới khi cố gắng sử dụng kết nối SSL thực thi mã hóa 256 bit. Để khắc phục vấn đề này tôi thấy mình cần phải cài đặt Java Cryptography Extension (JCE) Unlimited Strength Thẩm quyền Chính sách tập tin (ví dụ http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html)

+2

Đủ công bằng để cung cấp một biện pháp khắc phục có thể giúp một số nhưng điều này không giải thích chi tiết những gì thực sự gây ra sự ngẫu nhiên về lỗi của anh ta. Tôi gặp vấn đề chính xác này với JDK và JCE mới nhất được áp dụng trong môi trường sản xuất của chúng tôi vì vậy tôi không thấy đây là giải pháp. – JavaJedi

1

Tôi có dòng này

SSLContext sc = SSLContext.getInstance("SSL"); 

Đã phải thay đổi nó để

SSLContext sc = SSLContext.getInstance("TLSv1"); 

và bây giờ nó hoạt động trên cả hai, java 7 và 8 java

Lưu ý: (trong java 7 SSL và TLS cả làm việc với url cùng, trong java 8 chỉ cố gắng TLSv1 nhưng tôi đoán SSLv1 cũng làm việc)

0

Theo stack trace, các RecordVersion Unknow-0.0 được sản xuất từ ​​here =>referenced from here =>which is invoked in InputRecord.readV3Record

hầu hết thời gian, hai giá trị này không phải là 0, lý do cho điều này xảy ra có lẽ là phản ứng sai từ máy chủ trong khi bắt tay.

(Đây không phải là câu trả lời, chỉ là một số thông tin để dễ dàng tìm ra vấn đề và giải pháp)

Các vấn đề liên quan