2014-04-27 5 views
7

कभी-कभी नीचे दिया गया कोड विफल रहता है और कभी-कभी यह काम करता है। मैं जावा 8 का उपयोग कर रहा हूँ। क्या यह सर्वर की समस्या है?यादृच्छिक रूप से SSLException असमर्थित रिकॉर्ड संस्करण अज्ञात-0.0

थ्रेड "मुख्य" javax.net.ssl.SSLException में अपवाद: असमर्थित रिकॉर्ड संस्करण अज्ञात-0.0।

संपादित करें: मैं जेडीके 8 से जेडीके 7 में डाउनग्रेड करता हूं और यह काम करता है। एकमात्र समाधान मैंने पाया कि काम करता है।

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

मैं पुन: पेश नहीं कर सका (यह एक जवाब हालांकि, अब और भी आसान समस्या और समाधान पता लगाना के लिए कुछ जानकारी नहीं है), लेकिन JDK8 नहीं था। खुशी है कि यह जेडीके 7 में काम कर रहा है। – cweichen

+0

हां, यह समस्या अक्सर जेडीके 8 के साथ होती है, जेडीके 7 के साथ नहीं। –

उत्तर

7

मुझे 256-बिट एन्क्रिप्शन लागू करने वाले SSL कनेक्शन का उपयोग करने का प्रयास करते समय एक नई जावा स्थापना में एक ही त्रुटि संदेश मिला। समस्या को ठीक करने मैंने पाया मैं जावा क्रिप्टोग्राफी एक्सटेंशन (JCE) असीमित शक्ति क्षेत्राधिकार नीति फ़ाइलें (जैसे http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html)

+2

यह पर्याप्त उपाय प्रदान करता है जो कुछ की मदद कर सकता है लेकिन यह विस्तार से समझा नहीं जाता है कि वास्तव में उसकी त्रुटि की यादृच्छिकता क्या होती है। मुझे अपने उत्पादन माहौल में लागू नवीनतम जेडीके और जेसीई के साथ इस सटीक मुद्दे का अनुभव है, इसलिए मुझे इसे समाधान के रूप में नहीं देखा जाता है। – JavaJedi

1

मैं इस लाइन

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

SSLContext sc = SSLContext.getInstance("TLSv1"); 
को बदलना पड़ा था स्थापित करने के लिए की जरूरत

और अब यह दोनों पर काम करता है, जावा 7 और जावा 8

नोट: (जावा 7 एसएसएल और टीएलएस में दोनों एक ही यूआरएल के साथ काम किया, जावा 8 में सिर्फ TLSv1 लेकिन मैंने कोशिश की लगता है कि SSLv1 भी काम करता है)

0

स्टैक ट्रेस के अनुसार, RecordVersion अज्ञात-0.0 here =>referenced from here =>which is invoked in InputRecord.readV3Record

समय के सबसे अधिक, इन दो मानों 0 नहीं होना चाहिए, कारण से निर्मित है हैंडशेकिंग के दौरान सर्वर से शायद गलत प्रतिक्रिया हो रही है।

संबंधित मुद्दे