将我的datapayload提交给urbanairship时出现401错误

时间:2012-10-30 17:03:29

标签: c# push-notification apple-push-notifications urbanairship.com

我正在尝试通过UrbanAirship用C#向我的ipod发送测试通知。我尝试过很多代码片段,试图从我的Windows服务器向UrbanAirship发送通知,但我总是遇到401错误。

这是我的最新代码:

string postData = "{\"aps\": {\"badge\": 1, \"alert\": \"Hello from Urban Airship!\"}, \"device_tokens\": [\""+ devToken +"\"]}";

var uri = new Uri("https://go.urbanairship.com/api/push/");
var encoding = new UTF8Encoding();
var request = (HttpWebRequest)WebRequest.Create(uri);
char[] charArray = Encoding.UTF8.GetChars(Encoding.UTF8.GetBytes(postData));
request.Method = "POST";
request.Credentials = new NetworkCredential(username, password);
request.ContentType = "application/json";
request.ContentLength = encoding.GetByteCount(charArray);

using (var stream = request.GetRequestStream())
{
   stream.Write(encoding.GetBytes(postData), 0, encoding.GetByteCount(postData));
   stream.Close();
   var response = request.GetResponse();
   response.Close();
}

注意:我已经确认我的用户名和密码是正确的。

=== UPDATE ===

我会说我的urbanairship配置有一些令人担忧的事情,但以下工作:

curl -X PUT -u "appKey:appSecret" -H "Content-Type: application/json" --data '{"alias": "myalias"}' https://go.urbanairship.com/api/device_tokens/myTOken/ 

1 个答案:

答案 0 :(得分:0)

修正了,我修改了我的代码并且最重要的是:您的密码是应用程序主密码

string postData = "{\"aps\": {\"badge\": 1, \"alert\": \"Hello from Urban Airship!\"}, \"device_tokens\": [\""+ devToken +"\"]}";

var uri = new Uri("https://go.urbanairship.com/api/push/");
var encoding = new UTF8Encoding();
var request = (HttpWebRequest)WebRequest.Create(uri);
char[] charArray = Encoding.UTF8.GetChars(Encoding.UTF8.GetBytes(postData));
request.Method = "POST";
request.Credentials = new NetworkCredential(username, password);
request.ContentType = "application/json";
request.ContentLength = encoding.GetByteCount(charArray);

using (var stream = request.GetRequestStream())
{
    stream.Write(encoding.GetBytes(postData), 0, encoding.GetByteCount(postData));
    stream.Close();
    var response = request.GetResponse();
    response.Close();
}