android上的SignalR客户端(SignalA)不起作用

时间:2013-04-25 08:32:10

标签: android signalr

我是初学的android程序员。我遇到了SignalA的问题。有人试图运行SignalA客户端吗?它是如何工作的??? 我按照Erick的说法做了一切:下载SignalA.LongPolling。在SignalA.LongPolling basic-http-client上添加了对SignalA.LongPolling的引用。

然后添加到 MainActivity

package com.example.testdemo;

import com.zsoft.SignalA.Connection;
import com.zsoft.SignalA.Transport.StateBase;
import com.zsoft.SignalA.transport.longpolling.LongPollingTransport;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.Toast;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        String url = "http://signalrcalc.apphb.com/";
         Connection con = new com.zsoft.SignalA.Connection(url, this, new LongPollingTransport()) {

                @Override
                public void OnError(Exception exception) {
                    Toast.makeText(MainActivity.this, "On error: " + exception.getMessage(), Toast.LENGTH_LONG).show();
                }

                @Override
                public void OnMessage(String message) {
                    Toast.makeText(MainActivity.this, "Message: " + message, Toast.LENGTH_LONG).show();
                }

                @Override
                public void OnStateChanged(StateBase oldState, StateBase newState) {
                }
            };

            con.Start();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

出错了:

04-25 07:05:30.112: E/AndroidRuntime(275): FATAL EXCEPTION: main
04-25 07:05:30.112: E/AndroidRuntime(275): java.lang.NoClassDefFoundError: com.zsoft.SignalA.transport.longpolling.ConnectingState$1
04-25 07:05:30.112: E/AndroidRuntime(275):  at com.zsoft.SignalA.transport.longpolling.ConnectingState.OnRun(ConnectingState.java:39)
04-25 07:05:30.112: E/AndroidRuntime(275):  at com.zsoft.SignalA.transport.longpolling.StopableStateWithCallback.Run(StopableStateWithCallback.java:29)
04-25 07:05:30.112: E/AndroidRuntime(275):  at com.zsoft.SignalA.ConnectionBase.SetNewState(ConnectionBase.java:46)
04-25 07:05:30.112: E/AndroidRuntime(275):  at com.zsoft.SignalA.transport.longpolling.DisconnectedState.OnRun(DisconnectedState.java:42)
04-25 07:05:30.112: E/AndroidRuntime(275):  at com.zsoft.SignalA.Transport.StateBase.Run(StateBase.java:28)
04-25 07:05:30.112: E/AndroidRuntime(275):  at com.zsoft.SignalA.transport.longpolling.DisconnectedState.Start(DisconnectedState.java:25)
04-25 07:05:30.112: E/AndroidRuntime(275):  at com.zsoft.SignalA.ConnectionBase.Start(ConnectionBase.java:127)
04-25 07:05:30.112: E/AndroidRuntime(275):  at com.example.testdemo.MainActivity.onCreate(MainActivity.java:38)

如何运行它,我不知道......((

3 个答案:

答案 0 :(得分:2)

我也遇到了这个错误。我设法通过包含basic-http-client-android-0.88.jar和parallel-http-client.jar来使Signala工作。

后一个lib位于Signala的主分支中,与其他lib一起编译并将其复制到您的项目中。你需要在这里下载前库https://code.google.com/p/basic-http-client/

我使用android studio而不是eclipse,所以我也有一些gradle的问题;如果遇到这些问题,请确保在依赖项下的build.gradle中包含以下内容:

compile files('libs/signala.jar','libs/basic-http-client-android-0.88.jar','libs/parallel-basic-http-client.jar','libs/signala.longpolling.jar')

答案 1 :(得分:0)

我从源头上假设你的建筑物。当你克隆了github repo时,请执行以下操作。

git submodule init
and then
git submodule update

它将初始化basic-http-client,它作为子模块包含在项目中。然后你不需要安装jar。

希望这有帮助!

答案 2 :(得分:0)

我在项目中遇到了很多引用SignalA的问题。我尝试将SignalA,SignalA.LongPolling和parallel-basic-http-client引用到我的项目中。将basic-http-client-android-0.88.jar库导入SignalA.LongPolling和parallel-basic-http-client作为项目库后,我能够编译我的项目而没有任何错误。但是,当我尝试打开Signalr HubConnection时,应用程序崩溃了。我得到的错误与@ Kiran的错误非常相似。

我花了几个小时玩它并最终设法让它工作没有任何错误。我的方法是将以下库中的'src'文件夹导出为Jar Files: - SignalA - SignalA.LongPolling - parallel-basic-http-client

将那些.jar文件+ basic-http-client-android-0.88.jar复制到我的项目中(Workspace / my_app / libs /)。

由于SignalA是Android平台上SignalR的唯一解决方案,我想与这里的求助者分享完整的解决方法。

您可以观看此视频,按照说明进行操作!

  

https://www.youtube.com/watch?v=f9ih_M7PC10