2013-01-08 109 views
0

我想Socket.io未處理的異常類型MalformedURLException的

我的代碼連接到服務器SocketIO,這是它的標準鱈魚時,卻得到了一個MalformedURLException異常。

這是我的代碼:

import java.net.MalformedURLException; 
import org.json.*; 
import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import io.socket.*; 

@SuppressWarnings("unused") 
public class HostActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_host); 
     SocketIO socket = new SocketIO("http://MYSOCKETSERVER/"); 
     socket.connect(new IOCallback() { 
      @Override 
      public void onMessage(JSONObject json, IOAcknowledge ack) { 
       try { 
        System.out.println("Server said:" + json.toString(2)); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 

      @Override 
      public void onMessage(String data, IOAcknowledge ack) { 
       System.out.println("Server said: " + data); 
      } 

      @Override 
      public void onError(SocketIOException socketIOException) { 
       System.out.println("an Error occured"); 
       socketIOException.printStackTrace(); 
      } 

      @Override 
      public void onDisconnect() { 
       System.out.println("Connection terminated."); 
      } 

      @Override 
      public void onConnect() { 
       System.out.println("Connection established"); 
      } 

      @Override 
      public void on(String event, IOAcknowledge ack, Object... args) { 
       System.out.println("Server triggered event '" + event + "'"); 
      } 
     }); 

     // This line is cached until the connection is establisched. 
     socket.send("Hello Server!"); 

} 

這也表明在這一行:

SocketIO socket = new SocketIO("http://MYSOCKETSERVER/"); 

我覺得這個URL看起來vaild,但爲什麼它給人的錯誤,以及如何解決呢? 感謝

+0

您能否包含MalformedURLException的堆棧跟蹤? – Jens

回答

1

通過使用這個固定:

 try { 
    SocketIO socket = new SocketIO("http://SOCKETIOSERVER/"); 
    } catch (MalformedURLException e1) { 
     e1.printStackTrace(); 
    } 
0

MalformedURLException的有兩種情況:

  1. 如果你做的URL一些錯誤 - 就像忘記斜線或拼寫錯誤(http/https)協議。
  2. 如果URL不可解析。

在這種情況下,SocketIO將一個URL字符串作爲輸入。由於Java會針對潛在的錯誤拋出異常,如果出現這種情況,您需要處理該錯誤。這就是編譯器拋出這個異常的原因。

在你的情況下,你已經對硬編碼的值 - 但編譯器不確定,或者你的代碼運行到前面提到的那些場景。

所以拋出這個異常會做修復 - 如Christiaan提到。

相關問題