【发布时间】:2014-04-05 15:50:16
【问题描述】:
背景
在我的 C# 中间层中,我有一个计划任务,它每分钟运行特定的业务逻辑,然后相应地向 iOS 和 Android 设备发送推送通知。我使用Urban Airship 来促进推送通知,这意味着,在我的代码中,我只是调用他们的 API,然后他们处理对各种设备的实际推送。下面是这段代码的样子:
public static void SendNotice(UaMessageModel messages)
{
var audience = new NameValueCollection
{
{"alias", string.Join(", ", messages.UserIds)}
};
var notification = new NameValueCollection
{
{"alert", messages.Message}
};
var pushNotice = new NameValueCollection
{
{"audience", new JavaScriptSerializer().Serialize(audience)},
{"notification", new JavaScriptSerializer().Serialize(notification)}
};
//ToDo: remove "validate" from URL when done testing.
Utilities.PostWebRequest("https://go.urbanairship.com/api/push/validate/", "Basic XXXXXXXXX", pushNotice, "application/vnd.urbanairship+json; version=3;");
}
public class UaMessageModel
{
public List<int> UserIds { get; set; }
public string Message { get; set; }
}
问题
当我在Utilities.PostWebRequest 设置断点并将鼠标悬停在pushNotice 上时,我只看到pushNotice NameValueCollection 的键,但看不到值。我是否错误地构造了这个 NameValueCollection?
更多信息
无论pushNotice 的构造是否正确,我的WebClient 帖子仍然没有任何回复。当我只使用一个简单、扁平的 post 对象时,此方法有效。这是代码:
public static dynamic PostWebRequest(string url, string token, NameValueCollection obj, string accept)
{
using (var wc = new WebClient())
{
wc.Headers.Add("Authorization", token);
wc.Headers.Add("Accept", accept);
return GetObjectFromJson(Encoding.UTF8.GetString(wc.UploadValues(url, "POST", obj)));
}
}
提前致谢。
【问题讨论】:
标签: c# webclient urbanairship.com