2014-01-02 4 views
0

При попытке подключиться к API-интерфейсу Urban Airship я получаю ошибку 400 ошибок. Ниже приведена команда curl, которую я пытаюсь реплицировать в .NET. Код .NET находится в конце. Пожалуйста помоги.Подключение к REST API для городского дирижабля с помощью C#

curl -v -X POST 
-u "username:passowrd" 
-H "Content-type: application/json" 
-H "Accept: application/vnd.urbanairship+json; version=3;" 
--data '{"audience" : {"tag":"1_13_98"},     
     "device_types" : "all",      
     "notification" : {"alert": "Tag push alert"}  
    }' 
    https://go.urbanairship.com/api/push 

C# код, который я пытаюсь использовать это:

var json = gcm.ToJsonString(); 
    Console.WriteLine("JSON GCM Message: " + json); 
    var uri = new Uri("https://go.urbanairship.com/api/push/?"); 
    var encoding = new UTF8Encoding(); 
    var request = (HttpWebRequest)WebRequest.Create(uri); 

    request.Method = "POST"; 
    request.Credentials = new NetworkCredential(username, master); 
    request.ContentType = "application/json"; 

    WebHeaderCollection myWebHeaderCollection = request.Headers; 
    myWebHeaderCollection.Add(HttpRequestHeader.Accept, "application/vnd.urbanairship+json; version=3;"); 

    request.ContentLength = encoding.GetByteCount(json); 

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

    return true; 

API-интерфейс для urbanAirship можно найти здесь: http://docs.urbanairship.com/reference/api/v3/push.html

А вот пример запрос. .

POST /api/push HTTP/1.1 
Authorization: Basic <master authorization string> 
Content-Type: application/json 
Accept: application/vnd.urbanairship+json; version=3; 
{ 
    "audience" : { 
     "device_token" : "998BAD77A8347EFE7920F5367A4811C4385D526AE42C598A629A73B94EEDBAC8" 
    }, 
    "notification" : { 
     "alert" : "Hello!" 
    }, 
    "device_types" : "all" 
} 
+0

Исключение брошено в следующая строка: theWebHeaderCollection myWebHeaderCollection = request.Headers; myWebHeaderCollection.Add (HttpRequestHeader.Accept, "application/vnd.urbanairship + json; version = 3;"); – GMan

+0

Если я удалю строку, возвращается 400 Bad Request. – GMan

+0

Какое исключение возникает при попытке добавить в коллекцию заголовков? –

ответ

1

Вместо использования коллекции заголовков (которая бросает исключение) попробуйте установить свойство Accept на объект Request, например. request.Accept = "application/vnd.urbanairship + json; version = 3;"

Если вы все еще получаете 400, попробуйте посмотреть в корпусе ответа для получения более подробной информации.

2

Я создал библиотеку переменного тока # .Net для общения с городского дирижаблем API V3

Вы можете найти здесь:

https://github.com/JeffGos/urbanairsharp

Надеется, что это помогает

+0

Планируете ли вы работать над этой библиотекой? Я вижу, что последняя проверка была 2 года назад ... – Azimuth

+0

В настоящее время она обрабатывает все основные варианты использования Urban Airship API 2.0. У меня нет времени для поддержки этой библиотеки, но вы можете внести свой вклад в нее. – JeffG

+0

К сожалению, не RichMessage, который мне нужен. Но я уже разветвил и адаптировал его к моим потребностям. – Azimuth

Смежные вопросы