отправлять уведомления в OneSignal api с помощью flurl - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь отправить некоторые данные, используя пример на странице onesignal.

var request = WebRequest.Create("https://onesignal.com/api/v1/notifications") as HttpWebRequest;

request.KeepAlive = true;
request.Method = "POST";
request.ContentType = "application/json; charset=utf-8";

request.Headers.Add("authorization", "Basic xxx");

var obj = new
{
    app_id = "xxx",
    contents = new { en = "English Message" },
    included_segments = new string[] { "Active Users" }
};
var param = JsonConvert.SerializeObject(obj);
byte[] byteArray = Encoding.UTF8.GetBytes(param);

, используя этот код, работает нормально, но я использую Flurl, чтобы сделать запрос к сигналу onesignal, как этот

var body = new
{
    app_id = "xxx",
    contents = new
    {
        es = "Mensaje prueba"

    },
    included_segments = new string[] { "All" }
};
string param = JsonConvert.SerializeObject(body);
var content = new System.Net.Http.ByteArrayContent(Encoding.UTF8.GetBytes(param));

var response = await new Flurl.Url(urlbase)
    .AppendPathSegment("notifications")
    .WithHeader("Content-Type", "application/json; charset=utf-8")
    .WithHeader("Authorization", "Basic xxx")
    .PostAsync(content)
    .ReceiveString();

но я получаю "Плохой запрос".Пожалуйста, кто-нибудь может помочь указать, как сделать тот же звонок с Flurl?

1 Ответ

1 голос
/ 09 марта 2019

Как уже упоминалось в первом комментарии, вы делаете больше работы, чем нужно.Flurl будет сериализировать body для вас, поэтому удалите эти строки:

string param = JsonConvert.SerializeObject(body);
var content = new System.Net.Http.ByteArrayContent(Encoding.UTF8.GetBytes(param));

и отправьте body напрямую, используя PostJsonAsync:

var response = await urlbase
    ...
    .PostJsonAsync(body)
    .ReceiveString();
...