2013-11-23 4 views
5

localhost에서 서버로 요청을 보내려고하지만 다음 오류를 반환합니다.ssl을 통해 요청을 보내는 방법은 무엇입니까?

javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? 

당신은 HttpsURLConnection을 사용해야 할 때 SSL에 대한 HttpURLConnection를 사용하려고

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.io.OutputStream; 
import java.net.URL; 
import javax.net.ssl.HttpsURLConnection; 
import javax.xml.bind.JAXBContext; 
import javax.xml.bind.JAXBException; 
import javax.xml.bind.Marshaller; 


public class Test { 

public void connectMyServer(){ 

     Login auth = new Login("username", "password"); 

     JAXBContext cntx = JAXBContext.newInstance(Login.class); 
     Marshaller m = cntx.createMarshaller(); 
     m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); 

     try { 
      URL url = new URL("https://www.server.com/requests"); 
      HttpsURLConnection con = (HttpsURLConnection) url.openConnection(); 

      con.setRequestMethod("POST"); 
      con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
      con.setDoOutput(true); 
      con.setDoInput(true); 

      OutputStream os = con.getOutputStream(); 
      m.marshal(auth, os); 
      m.marshal(auth, System.out); 

      os.flush(); 
      con.getResponseCode(); 

      BufferedReader in = new BufferedReader(new InputStreamReader(
        con.getInputStream())); 

      String inputLine; 
      while ((inputLine = in.readLine()) != null) { 
       System.out.println(inputLine); 
      } 
      in.close(); 
      con.disconnect(); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
+0

HttpURLConnection 대신 HttpsURLConnection을 시도하십시오 – smeaggie

+0

@smeaggie https로 변경했지만 여전히 동일한 오류로 실행됩니다. –

+0

저는 Jim과 함께합니다. 서버가 HTTPS를 보내지 않습니다. – smeaggie

답변

1

코드입니다.

편집 :

나는이 시도가 :

import java.net.URL; 
import java.util.List; 
import java.util.Map; 

import javax.net.ssl.HttpsURLConnection; 

public class Test 
{ 

    public static void main(String[] args) throws Exception 
    { 
     URL url = new URL("https://www.google.com"); 
     HttpsURLConnection con = (HttpsURLConnection) url.openConnection(); 
     Map<String,List<String>> fields = con.getHeaderFields(); 
     con.disconnect(); 
    } 
} 

이 문제없이 실행됩니다.

오류 메시지는 원격 서버가 기술 팀의 의견에 관계없이 HTTPS가 아닌 HTTP를 사용하는 것처럼 응답 함을 나타냅니다.

+0

https로 변경했지만 여전히 동일한 오류로 실행됩니다. –

+0

원격 서버가 HTTP로 리디렉션됩니까? Wireshark와의 트래픽을보고 송수신 된 것을 확인 했습니까? –

+0

서버 기술팀에서 https에 대한 모든 연결을 보내도록 권고 했으므로 HTTP http : // –

관련 문제