0

尝试 Socket.io 时出现 MalformedURLException

我的代码连接到 SocketIO 服务器,这是它的标准代码。

这是我的代码:

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 看起来很有效,但是为什么它会给出这个错误以及如何解决它?谢谢

4

2 回答 2

1

通过使用它来修复它:

        try {
    SocketIO socket = new SocketIO("http://SOCKETIOSERVER/");
    } catch (MalformedURLException e1) {
        e1.printStackTrace();
    }
于 2013-01-09T14:37:25.937 回答
0

MalformedURLException有两种情况:

  1. 如果您在 URL 中犯了一些错误 - 例如忘记斜杠或 (http/https) 协议的拼写错误。
  2. 如果 URL 不可解析。

在这种情况下,SocketIO 将 URL 字符串作为输入。由于 Java 会为潜在的错误抛出异常,因此如果出现这种情况,您需要进行处理。这就是编译器抛出此异常的原因。

在您的情况下,您已经对值进行了硬编码 - 但编译器对此不确定,或者您的代码可能正在运行前面提到的那些场景。

因此,抛出此异常将进行修复 -Christiaan如前所述。

于 2016-09-23T05:51:25.343 回答