gpt4 book ai didi

java - Android 客户端未获取数据,但 .net 客户端从 SignalR 服务器获取数据

转载 作者:太空宇宙 更新时间:2023-11-04 13:28:57 28 4
gpt4 key购买 nike

抱歉问了这么长的问题!我是 SignalR 的新手。请帮助我解决我的问题。我在网络中有 SignalR 服务器,我正在从 .net 客户端站点获取数据,但无法从 Android 客户端获取数据。当我的调试器到达“hub.invoke”时就停止了。我已经厌倦了不同的代码,但没有成功。

如果我无法执行上述操作,那么我想在我家的本地服务器上执行此操作。我有两台笔记本,一台运行Win7,另一台运行Win8。我想在其中一个服务器中保留一个 signalR 服务器并从另一个服务器进行访问。我怎样才能做到这一点?我将编写什么样的 SignalR 服务器 API?如果你们能帮我迈出一步吗?

下面是我的绑定(bind)代码

String android_id = Settings.Secure.getString(arg0.getContext().getContentResolver(), Settings.Secure.ANDROID_ID);

HubConnection con = new HubConnection(Uri.parse("http://10.198.40.32:8090/login/").toString());
HubProxy hub = con.createHubProxy("NotificationHub");
con.start();
try {
hub.invoke( "userID", "password", android_id).get();
} catch (InterruptedException e) {
// Handle ...
System.out.print(e);
} catch (ExecutionException e) {
// Handle ...
System.out.print(e);
}

最佳答案

您可以引用我的工作示例代码,如下所示。然后,您可以将 Object.class 替换为您自己的自定义类:

public <T> void startSignalR(String transport, String serverUrl, final String userName, final Class<T> tClass) {

Platform.loadPlatformComponent(new AndroidPlatformComponent());
Credentials credentials = new Credentials() {
@Override
public void prepareRequest(Request request) {
request.addHeader(HEADER_KEY_USERNAME, userName);
}
};

mConnection = new HubConnection(serverUrl);
mConnection.setCredentials(credentials);
mHub = mConnection.createHubProxy(SERVER_HUB_CHAT);

if (transport.equals("ServerSentEvents")) {
mTransport = new ServerSentEventsTransport(mConnection.getLogger());
} else if (transport.equals("LongPolling")) {
mTransport = new LongPollingTransport(mConnection.getLogger());
}

mAwaitConnection = mConnection.start(mTransport);

try {
mAwaitConnection.get();
} catch (InterruptedException e) {
e.printStackTrace();
return;
} catch (ExecutionException e) {
e.printStackTrace();
return;
}

mHub.on("broadcastMessage",
new SubscriptionHandler1<Object>() {
@Override
public void run(final Object msg) {
final String finalMsg;
Gson gson = new Gson();
Object object = gson.fromJson(msg.toString(), tClass);
Field[] fields = object.getClass().getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
try {
System.out.println("Value = " + fields[i].get(object));
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
, Object.class);

...
}

SignalR for Android/Java的完整源代码,您可以找到here at GitHub

希望这有帮助!

关于java - Android 客户端未获取数据,但 .net 客户端从 SignalR 服务器获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32375453/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com