2015-03-09 5 views
3

Я использую mashape API для получения скорости пост отслеживания информации: -преобразования mashape ответа апи на C# класса

https://www.mashape.com/blaazetech/indian-post

Поскольку это в .NET C# следующий код не получает соблюдается: -

Task<HttpResponse<MyClass>> response = Unirest.get("https://indianpost.p.mashape.com/index.php?itemno=EF990403084IN") 
.header("X-Mashape-Key", mykey) 
.header("Accept", "application/json") 
.asJson(); 

Ошибка complie: «Аргументы типа для метода unirest_net.request.HttpRequest.asJson() не могут быть выведены из использования. Попробуйте явно указать аргументы типа."

Я не уверен, как можно использовать этот api. Это проблема с «MyClass» и что?

+0

BTW, синтаксис, предоставленный Mashape, неверен. Образец кода, который вы показываете, является асинхронным вызовом и ему не указан тип класса. Замените последнюю часть на: .asJsonAsync (); - см. здесь дополнительную информацию (раздел async) http://unirest.io/net.html - но в качестве отправной точки вы можете попробовать мой синхронный код GET ниже, чтобы все было просто. GL. – nanonerd

ответ

2

RSDC - Хорошо, что ваши конечные точки API для Indian-Post не работают в любом случае. Протестировали их на Mashape, и он возвращает ошибку.

>>> Я получил это работает на Metacritic GET API < < <

https://www.mashape.com/byroredux/metacritic (Game Список API, второй один вниз)

Re: MyClass

1) На mashape.com на странице документации API, найдите ответ 200/JSON на правой стороне.

2) Скопировать данные в формате JSON

3) перейти к http://json2csharp.com/ и вставьте код

4) нажмите кнопку Создать, чтобы получить классов C# код. Скопируйте код класса.

5) назад в VS, перейдите в папку «Модели» и создайте класс MyClass.cs.

6) вставить свой код в качестве такового:

public class MyClass 
{ 
    public class Result 
    { 
     public string name { get; set; } 
     public string score { get; set; } 
     public string url { get; set; } 
     public string rlsdate { get; set; } 
     public string rating { get; set; } 
     public string summary { get; set; } 
     public string platform { get; set; } 
    } 

    public class RootObject 
    { 
     public List<Result> results { get; set; } 
    } 
} 

7) Попробуйте это:

 HttpResponse<MyClass.RootObject> response = Unirest.get("https://byroredux-metacritic.p.mashape.com/game-list/ps4/coming-soon") 
     .header("X-Mashape-Key", "KxdVFN6Vlymshd5ezOQwBvS2Svjtp1bq5YOjsnFOkgTOwqwM6y") 
     .header("Accept", "application/json") 
     .asJson<MyClass.RootObject>(); 

Если вы запустите отладчик, вы можете увидеть, что ответ> Тело> Результаты Теперь содержит 25 элементов данных.

+1

Должен ли 'MyClass' и' RootObject' быть фактически одним и тем же классом? –

+0

@ ArturoTorresSánchez Привет, я думаю, у вас есть правильная идея. Я изменил свой ответ, используя вашу идею + другой API, и он работает. По крайней мере, для GET. У меня все еще есть проблемы с POST, но я создам для этого новый вопрос. Благодарю. – nanonerd

+1

Спасибо за помощь, попробуем и дадим вам знать, как она прошла. – RSDC