Não é possível redefinir o método: já conectado

Eu vi este erro irá lançar se chamado getInputStream antes, mas eu não tenho no meu código e verifiquei a propriedade conectada é falsa, mas ainda mostrar esse erro. o código é o seguinte:

private void testConnect() throws Exception{ HttpURLConnection con = null; OutputStream httpsend = null; String url = "https://xxxxx/goldapi/rs/checkPaymentService"; TrustManager[] trustall = new TrustManager[] { new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; } public void checkClientTrusted( java.security.cert.X509Certificate[] certs, String authType) {} public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {} } }; SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustall, new SecureRandom()); HostnameVerifier allHostsValid = new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession session) { System.out.println("URL Host: " + hostname + " vs. " + session.getPeerHost()); return true; } }; HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); con = (HttpsURLConnection)(new URL(url).openConnection()); con.setConnectTimeout(100000); // Set HTTP parameters for SOAP call //con.disconnect(); // test con.setAllowUserInteraction(true); con.setRequestMethod("POST"); con.setDoOutput(true); con.setDoInput(true); con.setUseCaches(false); byte[] b = "test".getBytes(); con.setRequestProperty( "Content-Length", String.valueOf( b.length)); con.setRequestProperty("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"); //Send request to server httpsend = con.getOutputStream(); httpsend.write(b); httpsend.flush(); try{ httpsend.close(); }catch(Exception e){ e.printStackTrace(); } } 

ele lançará a exceção

Exceção no segmento “main” java.net.ProtocolException: não pode redefinir o método:
em java.net.HttpURLConnection.setRequestMethod (HttpURLConnection.java:320)
em sun.net.www.protocol.https.HttpsURLConnectionImpl.setRequestMethod (HttpsURLConnectionImpl.java:354)
em Test.PSGConnectTest.testConnect (PSGConnectTest.java:62)
em Test.PSGConnectTest.main (PSGConnectTest.java:24)

já connectedI descobri que preciso escrever explicitamente

 con.disconnect(); 

para evitar esse erro, mas, em seguida, outra exceção estranha ao executar

 httpsend = con.getOutputStream(); 

esta declaração lançará exceção como segue

java.net.ProtocolException: Não é possível gravar a saída depois de ler a input.

mas eu não tenho lido nenhuma input (não getInputStream antes), então qual é o problema?

Atualização: Eu encontrei este erro só ocorrer quando eu uso o modo de debugging no eclipse, não este erro se for executado no modo de execução do eclipse.