Я сейчас работаю в xamarin, используя WebSocket4Net для подключения к серверу GraphQL. Сейчас я пытаюсь отправить строку запроса через сокет, но получаю сообщение об ошибке, в котором говорится, что «не аутентифицирован как пользователь». Я получаю это, потому что я должен передать токен в заголовок, однако, я еще не делаю это правильно.
Я попытался добавить пользовательский заголовок при первом подключении, но это, похоже, не имело значения. Есть ли способ установить заголовок при отправке строки запроса?
У меня это работает на моей игровой площадке GraphQL, но у меня его пока нет в моем коде.
Вот как я инициализировал сокет, и вы можете видеть, что я пытался добавить сюда пользовательский заголовок, но это ничего не изменило.
public void Init(string Uri)
{
//Initialize the socket
try
{
var cookies = new List<KeyValuePair<string, string>>();
var extension = new List<KeyValuePair<string, string>>();
extension.Add(new KeyValuePair<string, string>("x-token", AuthenticationAPI.CurrentToken.ToString()));
sock = new WebSocket(Uri, "graphql-ws", customHeaderItems:extension);
sock.Opened += (sender, data) => { OnConnect(data); };
sock.MessageReceived += (sender, data) => { OnMessage(data); };
sock.Closed += (sender, data) => { OnDisconnect(data); };
}
catch (Exception ex)
{
//Init failed
sock = null;
isConnected = false;
}
}
И затем я пытаюсь отправить здесь строку запроса, но получаю сообщение об ошибке «Не аутентифицирован как пользователь»
var variables = new Variables();
string entryDate = string.Format("{0:yyyy-MM-dd}", i.ActionDateTime);
var query = "mutation {logAction(episodeId: " + i.EpisodeId + ", listen: " + listenedTo + ") {episodeId listen position favorite entryDate}}"; // + ", position: " + i.PlayerTime + ", favorite: " + i.Favorite.ToString().ToLower()
var payload = new WebSocketHelper.Payload(query, variables);
var JsonIn = JsonConvert.SerializeObject(new WebSocketCommunication("start", payload));
DabSyncService.Instance.Send(JsonIn);
Я пытался запустить это в течение неделиили теперь, если кто-нибудь может указать мне правильное направление, это было бы здорово. Спасибо!