Question

Je me connecte à un service ODATA via une application C # ASP.NET, qui a des activités de service telles que:

GetItems(int? itemID, double? price)

Je peux consommer ce sans problèmes dans mon navigateur, par exemple.

http://api.mycompany.com/companycatalogue/GetItems?itemID=4

Je comprends comment utiliser LINQ to Entities consommer un service OData, mais ne peut pas trouver une explication décente de la façon de consommer le service opérations comme celui ci-dessus en C #. J'ai fait une référence Web au service de ma solution Visual Studio.

Jusqu'à présent, j'ai quelque chose comme ça pour ma consommation habituelle des données:

using CompanyCatalogue; //my web reference
...
protected void Page_Load(object sender, EventArgs e)
{
    CompanyCatalogueEntities dataContext = new CompanyCatalogueEntities (new Uri("http://api.mycompany.com/companycatalogue/"));
    var result = from i in dataContext.Items select i;  //just an example

    //this is where I get into problems
    var operationResults = CompanyCatalogue.GetItems(6, 20.5); //I just made this up
}

Les pointeurs?

Était-ce utile?

La solution

OK, a la réponse:

using CompanyCatalogue; //my web reference
...
protected void Page_Load(object sender, EventArgs e)
{
    CompanyCatalogueEntities dataContext = new CompanyCatalogueEntities(); 

    DataServiceQuery<GetItemsResult> q = dataContext.CreateQuery<GetItemsResult>("GetItems")
        .AddQueryOption("paramName", 6)
        .AddQueryOption("paramName2", 20.5);

    List<GetItemsResult> items = q.Execute().ToList();
}

Autres conseils

Cela peut être une aide pour vous. Ce code échantillon utilisé pour consommer l'opération de service dans le service de données WFC. Cette opération de service (GetRowCount) renvoie la valeur de type entier (int). entrée nom para est "code"

    var q = context.CreateQuery<int>("GetRowCount").AddQueryOption("code", "'" + serviceProvider.Code + "'");
            int RecordCount = context.Execute<int>(new Uri(q.RequestUri.ToString().Replace("GetRowCount()", "GetRowCount"))).FirstOrDefault();

Avez-vous essayé d'utiliser HttpWebRequest?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top