Pregunta

Estoy conectando a un servicio OData través de una aplicación ASP.NET en C #, que tiene operaciones de servicio tales como:

GetItems(int? itemID, double? price)

Me puede consumir esto sin problemas en mi navegador, por ejemplo.

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

Me entender cómo usar LINQ a Entidades de consumir un servicio OData, pero no puede encontrar una explicación decente de cómo consumir el servicio operaciones como la de arriba en C #. He hecho una referencia Web al servicio en mi solución de Visual Studio.

Hasta ahora, tengo algo como esto para mi consumo habitual de los datos:

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
}

Cualquier punteros?

¿Fue útil?

Solución

OK, tiene la respuesta:

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();
}

Otros consejos

Esto puede ser de ayuda para usted. Este código de ejemplo utiliza para consumir la operación de servicio en el servicio de datos CFM. Esta operación de servicio (GetRowCount) devuelve el valor de tipo de número entero (int). Nombre de entrada para es "código"

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

¿Ha intentado utilizar HttpWebRequest?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top