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には、次の2つの場合があります。

  1. スラッシュを忘れたり、(http / https)プロトコルのスペルを間違えたりするなど、URLに誤りを犯した場合。
  2. URLが解析可能でない場合。

この場合、SocketIOはURL文字列を入力として受け取ります。Javaは潜在的なエラーに対して例外をスローするため、このような状況が発生した場合は、それを処理する必要があります。これが、コンパイラがこの例外をスローする理由です。

あなたの場合、値をハードコーディングしましたが、コンパイラはそれについて確信が持てないか、コードが前述のシナリオで実行されている可能性があります。

したがって、この例外をスローすると、Christiaan前述のように修正が行われます。

于 2016-09-23T05:51:25.343 に答える