gpt4 book ai didi

HttpAuthorizer 中的 Android Pusher Request Body 实现

转载 作者:行者123 更新时间:2023-12-05 00:01:15 31 4
gpt4 key购买 nike

我是 Pusher 的新手。我已经在我的应用程序中成功实现了公共(public) channel 订阅。我目前停留在 Android 私有(private) channel 订阅。

我们应该在服务器的 post 端点中传递请求正文参数。在我的 iOS 应用程序中,我们正在创建自定义授权器以在 PusherOption 中发送请求正文。但在 Android 中,只有 2 个选项可以在 PusherOptions 中发送参数,例如 setHeaders() 和 setQueryStringParameters()。

我必须发送带有 URL 的以下正文:

["data": ["socket_id": SOCKET_ID, "user_id": USER_ID, "channel": "private-CHANNEL_NAME"]]

我目前在 onAuthenticationFailure 上遇到异常 [com.pusher.client.AuthorizationFailureException: java.io.FileNotFoundException: MY ENDPOINT URL]。

我目前的Android代码如下:

public static void subscribePrivateChannel(final String channelName, final String userId, final String authKey) {
final HttpAuthorizer authorizer = new HttpAuthorizer(MY_ENDPOINT_URL);
PusherOptions options = new PusherOptions().setEncrypted(true).setAuthorizer(authorizer);
final Pusher pusher = new Pusher(Config.PUSHER_APP_KEY, options);

pusher.connect(new ConnectionEventListener() {
@Override
public void onConnectionStateChange(ConnectionStateChange connectionStateChange) {
if (connectionStateChange.getCurrentState().toString().equalsIgnoreCase("CONNECTED")) {
String socketId = pusher.getConnection().getSocketId();
HashMap<String, String> parameters = new HashMap<>();
parameters.put("socket_id", socketId);
parameters.put("channel", channelName);
parameters.put("user_id", userId);
authorizer.setQueryStringParameters(parameters);

pusher.subscribePrivate(channelName, new PrivateChannelEventListener() {
@Override
public void onAuthenticationFailure(String s, Exception e) {
Log.d(TAG, "onAuthenticationFailure() called with: s = [" + s + "], e = [" + e + "]");
}

@Override
public void onSubscriptionSucceeded(String s) {
Log.d(TAG, "onSubscriptionSucceeded() called with: s = [" + s + "]");
}

@Override
public void onEvent(String s, String s1, String s2) {
Log.d(TAG, "onEvent() called with: s = [" + s + "], s1 = [" + s1 + "], s2 = [" + s2 + "]");
}
});
}
}

@Override
public void onError(String s, String s1, Exception e) {
Log.d(TAG, "onError() called with: s = [" + s + "], s1 = [" + s1 + "], e = [" + e + "]");
}
});
}

最佳答案

您可以通过 Pusher 的 UrlEncodedConnectionFactory 添加任意请求体参数:

HttpAuthorizer(authEndpoint, UrlEncodedConnectionFactory(mapOf(
"key1" to "value",
"key2" to "value",
)))

(使用 com.pusher:pusher-java-client:2.2.5)

令人沮丧的是,这没有更好的记录/更容易找到...

关于HttpAuthorizer 中的 Android Pusher Request Body 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42952078/

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