【问题标题】:Android jawampa - ApplicationError(wamp.error.invalid_uri, [], {}). Using correct URI format, but still crashingAndroid japanpa - ApplicationError(wamp.error.invalid_uri, [], {})。使用正确的 URI 格式,但仍然崩溃
【发布时间】:2017-06-29 08:58:21
【问题描述】:

我已经在多台设备上测试了我一直在执行的过程,但是,当我开始在 Android 上使用它时,它总是失败。

我一直在使用 WAMP 在多个设备之间进行通信。 Android 上似乎没有任何官方支持 Autobahn 支持 WAMP jawampa 应该可以解决问题。

我使用 Android Studios 将此模块包含到 Android 项目中。 我对 Android 开发相当陌生,所以我尝试从我有更多经验的地方解决问题。我认为在 Android 上使用它时可能会出现问题。

这是我对项目的设置。

应用分级:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.1"
    defaultConfig {
        applicationId "com.example.user.androidapp"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        jackOptions {
            enabled true
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/dependencies.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/LGPL2.1'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/notice'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/ASL2.0'
        exclude 'META-INF/io.netty.versions.properties'
        exclude 'META-INF/INDEX.LIST'
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.1.1'
    compile 'com.android.support:design:25.1.1'
    testCompile 'junit:junit:4.12'
    compile 'ws.wamp.jawampa:jawampa-core:0.4.2'
    compile 'ws.wamp.jawampa:jawampa-netty:0.4.2'
}

我设置了权限<uses-permission android:name="android.permission.INTERNET" />

WAMP 代码:

package com.example.cdrandin.androidapp;

import android.util.Log;

import java.util.concurrent.TimeUnit;

import rx.functions.Action1;
import ws.wamp.jawampa.WampClient;
import ws.wamp.jawampa.WampClientBuilder;
import ws.wamp.jawampa.WampError;
import ws.wamp.jawampa.transport.netty.NettyWampClientConnectorProvider;

public class WampTasks {
    private static WampTasks _ourInstance = new WampTasks();
    private static String _host = "192.168.2.201";
    private static String _port = "8080";

    public static WampTasks getInstance() {
        return _ourInstance;
    }

    public WampClient client = null;

    private WampTasks() {
        try {
            // Create a builder and configure the client
            WampClientBuilder builder = new WampClientBuilder();
            NettyWampClientConnectorProvider connectorProvider = new NettyWampClientConnectorProvider();
            builder.withConnectorProvider(connectorProvider)
                    .withUri(String.format("ws://%s:%s/ws", _host, _port))
                    .withRealm("realm1")
                    .withInfiniteReconnects()
                    .withReconnectInterval(5, TimeUnit.SECONDS);

            // Create a client through the builder. This will not immediately start
            // a connection attempt
            client = builder.build();
        } catch (WampError e) {
            // Catch exceptions that will be thrown in case of invalid configuration
            e.printStackTrace();
            return;
        } catch(Exception e) {
            e.printStackTrace();
            return;
        }
    }

    public void Alert(String ip){
        client.publish("com.app.test", "hello world");
    }
}

崩溃报告:

02-10 13:46:16.824 2872-2878/com.example.user.androidapp W/art: Suspending all threads took: 45.899ms
02-10 13:46:16.830 2872-2872/com.example.user.androidapp W/System.err: ApplicationError(wamp.error.invalid_uri, [], {})
02-10 13:46:16.833 2872-2872/com.example.user.androidapp W/System.err:     at ws.wamp.jawampa.transport.netty.NettyWampClientConnectorProvider.createConnector(NettyWampClientConnectorProvider.java:102)
02-10 13:46:16.833 2872-2872/com.example.user.androidapp W/System.err:     at ws.wamp.jawampa.WampClientBuilder.build(WampClientBuilder.java:127)
02-10 13:46:16.833 2872-2872/com.example.user.androidapp W/System.err:     at com.example.user.androidapp.WampTasks.<init>(WampTasks.java:40)
02-10 13:46:16.833 2872-2872/com.example.user.androidapp W/System.err:     at com.example.user.androidapp.WampTasks.<clinit>(WampTasks.java:17)
02-10 13:46:16.833 2872-2872/com.example.user.androidapp W/System.err:     at com.example.user.androidapp.SelectedDevice.onCreate(SelectedDevice.java:13)
02-10 13:46:16.834 2872-2872/com.example.user.androidapp W/System.err:     at android.app.Activity.performCreate(Activity.java:5990)
02-10 13:46:16.834 2872-2872/com.example.user.androidapp W/System.err:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
02-10 13:46:16.834 2872-2872/com.example.user.androidapp W/System.err:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
02-10 13:46:16.834 2872-2872/com.example.user.androidapp W/System.err:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
02-10 13:46:16.845 2872-2872/com.example.user.androidapp W/System.err:     at android.app.ActivityThread.access$800(ActivityThread.java:151)
02-10 13:46:16.845 2872-2872/com.example.user.androidapp W/System.err:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
02-10 13:46:16.845 2872-2872/com.example.user.androidapp W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:102)
02-10 13:46:16.845 2872-2872/com.example.user.androidapp W/System.err:     at android.os.Looper.loop(Looper.java:135)
02-10 13:46:16.846 2872-2872/com.example.user.androidapp W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5254)
02-10 13:46:16.846 2872-2872/com.example.user.androidapp W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
02-10 13:46:16.847 2872-2872/com.example.user.androidapp W/System.err:     at java.lang.reflect.Method.invoke(Method.java:372)
02-10 13:46:16.847 2872-2872/com.example.user.androidapp W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
02-10 13:46:16.847 2872-2872/com.example.user.androidapp W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
02-10 13:46:16.848 2872-2872/com.example.user.androidapp D/AndroidRuntime: Shutting down VM
02-10 13:46:16.849 2872-2872/com.example.user.androidapp E/AndroidRuntime: FATAL EXCEPTION: main
                                                                               Process: com.example.user.androidapp, PID: 2872
                                                                               java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.user.androidapp/com.example.user.androidapp.SelectedDevice}: java.lang.NullPointerException: Attempt to invoke virtual method 'rx.Observable ws.wamp.jawampa.WampClient.publish(java.lang.String, java.lang.Object[])' on a null object reference
                                                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
                                                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
                                                                                   at android.app.ActivityThread.access$800(ActivityThread.java:151)
                                                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                   at android.os.Looper.loop(Looper.java:135)
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:5254)
                                                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                                                   at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
                                                                                Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'rx.Observable ws.wamp.jawampa.WampClient.publish(java.lang.String, java.lang.Object[])' on a null object reference
                                                                                   at com.example.user.androidapp.WampTasks.Alert(WampTasks.java:66)
                                                                                   at com.example.user.androidapp.SelectedDevice.onCreate(SelectedDevice.java:13)
                                                                                   at android.app.Activity.performCreate(Activity.java:5990)
                                                                                   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
                                                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
                                                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
                                                                                   at android.app.ActivityThread.access$800(ActivityThread.java:151) 
                                                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                   at android.os.Looper.loop(Looper.java:135) 
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:5254) 
                                                                                   at java.lang.reflect.Method.invoke(Native Method) 
                                                                                   at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
02-10 13:46:16.873 2872-2883/com.example.user.androidapp I/art: Background partial concurrent mark sweep GC freed 607(56KB) AllocSpace objects, 0(0B) LOS objects, 40% free, 2MB/3MB, paused 10.990ms total 146.347ms
02-10 13:46:19.630 2872-2872/com.example.user.androidapp I/Process: Sending signal. PID: 2872 SIG: 9

【问题讨论】:

    标签: android wamp autobahn


    【解决方案1】:

    你的 Uri 是你的 WampBuilder 中的一个问题 withUri(String.format("ws://%s:%s/ws", _host, _port))。检查它是否运行正常。 使用此 URL http://192.168.2.201:8080 启动您的浏览器。 通常,您会看到一条类似“此服务器在路径 /ws 上提供了一个 wamp 路由器”之类的 wamp 消息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-31
      • 1970-01-01
      • 1970-01-01
      • 2019-09-05
      • 1970-01-01
      • 1970-01-01
      • 2019-10-19
      • 1970-01-01
      相关资源
      最近更新 更多