2013-01-08 108 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提到。

相关问题