none
Consumir Api en PHP en Windows forms c# RRS feed

  • Pregunta

  • Saludos Comunidad 

    Existe alguna librería, función o método para poder consumir una rest Api en PHP desde un proyecto Windows forms en c#.

    Nunca lo he hecho me gustaría saber si alguien lo ha trabajado, haciendo peticiones Get y Post.

    miércoles, 10 de julio de 2019 17:57

Todas las respuestas

  • Es relativamente sencillo si tienes claro qué es lo que te devuelve la API. El hecho de que esté alojada en PHP es irrelevante; desde el programa que hace la llamada no se distingue el tipo de servidor que aloja la API.

    Lo primero que necesitas es la documentación que te describe qué llamadas admite la API y qué valores devuelve. Por ejemplo, puede ser que te digan que para consultar los productos hagas un GET a "http://el.sitio.web/Productos". Entonces utilizas para enviar esa llamada cualquiera de las clases de .Net que permiten enviar peticiones http. Por ejemplo, podrías usar el método DownloadString de la clase WebClient para enviar esa petición. El resultado sería un string con el valor devuelto por la API.

    A continuación tienes que analizar ese valor devuelto. Para ello, la documentación de la API te tiene que decir qué datos se devuelven y en qué formato. Lo más típico en la práctica es que te devuelvan el resultado codificado como JSON, pero esto no es forzoso. El mero hecho de que sea una API de tipo REST no necesariamente implica que sea JSON.

    Suponiendo que sea un JSON, lo más usual es usar un deserializador para meter los datos en una clase. Hay muchos deserializadores JSON; uno de los más conocidos es NewtonSoft.Json, que puedes añadir a tu proyecto como paquete NuGet. El valor que te devuelve es un objeto que dentro contiene los datos devueltos por la API. A partir de ahí ya tomas los datos desde las propiedades del objeto y los usas en tu programa.

    miércoles, 10 de julio de 2019 18:58
    Moderador
  • Si la Api devuelve un JSON, lo que necesito es la conexión desde Windows forms a la dirección(URL) de la petición, me mencionaste la clase webclient. 
    miércoles, 10 de julio de 2019 20:16
  • En el caso más sencillo (GET), el WebClient es tan simple de usar como esto:

    WebClient wc = new WebClient();
    string resultado = wc.DownloadString("http://tu.servidor/peticion?otrosdatos");

    https://docs.microsoft.com/en-us/dotnet/api/system.net.webclient.downloadstring?view=netframework-4.8

    Para hacer un POST puedes usar UploadString.https://docs.microsoft.com/en-us/dotnet/api/system.net.webclient.uploadstring?view=netframework-4.8

    miércoles, 10 de julio de 2019 20:44
    Moderador
  • Muchas gracias, ya tengo de dónde inciar.
    miércoles, 10 de julio de 2019 21:13