173 messaggi dal 18 gennaio 2008
Ciao a tutti,
dovrei fare un programma che scriva su un db il json che mi viene inviato via http post:
https://docs.meraki.com/display/MR/Location+API

Non ho mai fatto un'applicazione del genere. Qualcuno sá come scaricare i dati o se e come devo configurare iis?


Grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Tom,
puoi fornire qualche altro dettaglio? Ad esempio, l'URL che hai postato è quello della tua applicazione? Si tratta di un'applicazione ASP.NET MVC o Web API o altro?

Se devi ricevere dei dati formattati in JSON dai tuoi utenti, allora ti consiglio di usare ASP.NET Web API. Trovi varie risorse qui su ASPItalia, come questo articolo introduttivo di Andrea Colaci.
http://www.aspitalia.com/articoli/asp.net-mvc/scrivere-servizi-rest-asp.net-web-api.aspx

TOM_YOOX ha scritto:

Qualcuno sá come scaricare i dati

Che intendi con "scaricare"? Non sei tu a dover ricevere i dati inviati dagli utenti?

ciao,
Moreno

Enjoy learning and just keep making
173 messaggi dal 18 gennaio 2008
Ciao Moreno,
la mia azienda ha un contratto con l'azienda che Miraki che ci offre il servizio. Io come documentazione ho solo il link che ho postato. Sul tipo di applicazione sono assolutamente libero. Un dei miei problemi é anche scegliere il tipo di applicazione, visto che non ho mai gestito una problematica simile.
Praticamente, inviato un validator(string) in get sulla porta 9201 e /meraki,
sullo stesso url dovrebbero iniziare a mandare in post un flusso di dati in json che io dovrei raccogliere e scrivere su un db.
Se mi dai un'idea su come monteresti il tutto mi fai un gran favore, non ho mai lavorato direttamente con un http server e le sue chiamate.

Grazie
Tommaso

BrightSoul ha scritto:
Ciao Tom,
puoi fornire qualche altro dettaglio? Ad esempio, l'URL che hai postato è quello della tua applicazione? Si tratta di un'applicazione ASP.NET MVC o Web API o altro?

Se devi ricevere dei dati formattati in JSON dai tuoi utenti, allora ti consiglio di usare ASP.NET Web API. Trovi varie risorse qui su ASPItalia, come questo articolo introduttivo di Andrea Colaci.
http://www.aspitalia.com/articoli/asp.net-mvc/scrivere-servizi-rest-asp.net-web-api.aspx

TOM_YOOX ha scritto:

Qualcuno sá come scaricare i dati

Che intendi con "scaricare"? Non sei tu a dover ricevere i dati inviati dagli utenti?

ciao,
Moreno
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Tommaso,
ok, ora ho letto la documentazione, penso di aver capito il funzionamento.

TOM_YOOX ha scritto:

Praticamente, inviato un validator(string) in get sulla porta 9201 e /meraki,

Sei sicuro di dover inviare tu il codice di validazione? Nella documentazione è scritto:

Upon the first connection, the Meraki cloud will perform a single HTTP GET; the server must return the organization-specific validator string as a response

Quindi è Meraki che fa una GET alla tua pagina, che sarà ospitata sul tuo webserver aziendale. Di conseguenza, quando la tua pagina viene chiamata con il metodo GET, dovrà restituire quel codice di validazione che avevi visto nella dashboard Meraki. Solo quando questo primo passo si è concluso correttamente, allora Meraki inizierà ad inviarti delle POST sullo stesso URL.

Come soluzione, potresti anche usare un semplice httphandler ashx, ma devi dirmi tu con che tecnologia ti senti più ferrato nel lavorare perché esistono varie soluzioni che usano ASP.NET Webforms, MVC o WebAPI. Per ora ti faccio un esempio con un HttpHandler, che è forse la cosa più semplice e che ha meno dipendenze. Crei un file .ashx e lo copi in una cartella del tuo webserver.

Tieni presente che questo è solo un esempio base che soddisfa giusto i due requisiti minimi:
  • Rispondere con il codice di validazione quando lo si chiama in GET
  • Salvare il contenuto JSON della richiesta quando lo si chiama in POST

Tu ovviamente quel JSON dovrai interpretarlo ed usare il SECRET per verificare che non sia stato alterato (trovi info nella whitepaper), ed infine inserire i dati nel database. Io qui mi limito a salvarlo su un file di log.

Ecco il contenuto del file ashx da cui iniziare:
<%@ WebHandler Language="C#" Class="MioNamespace.MioHandler" %>
using System;
using System.IO;
using System.Web;

namespace MioNamespace {
  public class MioHandler : IHttpHandler {

    //Questi vanno cambiati con i valori che trovi nella dashboard Meraki
    private const string VALIDATOR = "9d37f12a4a8b0284c19adf";
    private const string SECRET = "abcdefghijklmno";
    
    public void ProcessRequest(HttpContext context) {
      switch(context.Request.HttpMethod) {
        case "GET":
          RestituisciCodiceDiValidazione(context);
          break;
        case "POST":
          SalvaContenutoJson(context);
          break;
        default:
          throw new NotSupportedException(string.Format("Il metodo {0} non è supportato", context.Request.HttpMethod));
      }
    }
    
    private void RestituisciCodiceDiValidazione(HttpContext context) {
      context.Response.ContentType = "text/plain";
      context.Response.Write(VALIDATOR);
    }
    
    private void SalvaContenutoJson(HttpContext context) {
      string contenutoJson;
      using (var reader = new StreamReader(context.Request.InputStream)) {
        contenutoJson = reader.ReadToEnd();
      }
      //Mi limito a salvare i dati in un file di log, senza interpretarli
      File.AppendAllText(context.Server.MapPath("log.txt"), string.Format("{0:dd/MM/yyyy HH.mm.ss}\r\n{1}\r\n", DateTime.Now, contenutoJson));
      //Qui tu dovrai invece parsare il Json, usare il SECRET per verificare che non è stato alterato e salvare i dati nel database
    }
    
    public bool IsReusable {
        get {
            return false;
        }
    }
  }
}

Pubblicato l'ashx, vai a configurare il suo URL nella dashboard Meraki. Se tutto si è svolto correttamente, dovresti cominciare a vedere dei dati apparire nel file di log.

ciao,
Moreno
Modificato da BrightSoul il 15 febbraio 2015 09.39 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.