Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 使用flurl向OneSignal api发送通知_.net_Core_Onesignal_Flurl - Fatal编程技术网

.net 使用flurl向OneSignal api发送通知

.net 使用flurl向OneSignal api发送通知,.net,core,onesignal,flurl,.net,Core,Onesignal,Flurl,我尝试使用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.

我尝试使用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拨打相同的电话?

如第一条评论中所述,您所做的工作超出了您的需要。Flurl将为您序列化
body
,因此请删除以下行:

string param = JsonConvert.SerializeObject(body);
var content = new System.Net.Http.ByteArrayContent(Encoding.UTF8.GetBytes(param));
并使用
PostJsonAsync
直接发布
body

var response = await urlbase
    ...
    .PostJsonAsync(body)
    .ReceiveString();
只需使用
PostJsonAsync(body)
而不是
PostAsync
,不要序列化body本身。让Flurl按自己的方式做吧。