2009-04-27 6 views
7

私はSSLクライアントサーバープログラムで作業しており、次の方法を再利用する必要があります。ここでjava.lang.IllegalArgumentExceptionを解決する方法:protocol = https host = null例外?

private boolean postMessage(String message){ 
    try{ 
     String serverURLS = getRecipientURL(message); 

     serverURLS = "https:\\\\abc.my.domain.com:55555\\update"; 

     if (serverURLS != null){ 
      serverURL = new URL(serverURLS); 
     } 

     HttpsURLConnection conn = (HttpsURLConnection)serverURL.openConnection(); 

     conn.setHostnameVerifier(new HostnameVerifier() { 
     public boolean verify(String arg0, SSLSession arg1) { 
      return true; 
     } 
     }); 

     conn.setDoOutput(true); 

     OutputStream os = conn.getOutputStream(); 

     OutputStreamWriter wr = new OutputStreamWriter(os); 

     wr.write(message); 

     wr.flush(); 

     if (conn.getResponseCode() != HttpsURLConnection.HTTP_OK) 
      return false; 
     else 
      return true; 

    } 

SERVERURLが、私はこの方法を実行しようとすると、私はラインでの例外を取得

private URL serverURL = null; 

として初期化

のOutputStream OS = conn.getOutputStream()されます。

例外は、その理由は何

java.lang.IllegalArgumentException: protocol = https host = null 

のですか?

答えて

18

URLにはスラッシュ(/)を使用し、後方には(ウィンドウとして)使用しません。試してみてください:

serverURLS = "https://abc.my.domain.com:55555/update"; 

あなたがエラーを取得する理由は、URLクラスは、文字列のホスト部分を解析することができないということであるため、hostnullです。

3

このコードは完全に不要と思われる:

String serverURLS = getRecipientURL(message); 

serverURLS = "https:\\\\abc.my.domain.com:55555\\update"; 

if (serverURLS != null){ 
    serverURL = new URL(serverURLS); 
} 
  1. serverURLSがあるため、dead store
  2. その後、前の文を作り、その後、すぐにあなたがserverURLSの値を上書きgetRecipientURL(message)
  3. の結果が割り当てられていますに変数aの値が割り当てられているので、if (serverURLS != null)trueと評価されますeを前のステートメントで使用する場合は、serverURLに値を割り当てます。 if (serverURLS != null)falseに評価することは不可能です!
  4. 実際には、変数serverURLSを前のコード行よりも使用することはありません。

あなただけでこのすべてを置き換えることができます:

serverURL = new URL("https:\\\\abc.my.domain.com:55555\\update"); 
+0

こんにちは、その行だけで、エラーの理由を確認するために私が追加されます。実際には、メッセージを使用してURLがフィルタリングされます。 ServerURLの割り当てはTest行であることに注意してください:) –