Condividi:        

MACRO VBA E WEB SERVICES

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

MACRO VBA E WEB SERVICES

Postdi christianghz » 28/12/20 12:24

Ciao a tutti,
mi interfaccio quotidianamente con un gestionale web che funziona con web services , avrei bisogno di eseguire delle chiamate dai miei file excel per scrivere e ottenere dei dati.
Ho provato a modificare 2 soluzioni qui del forum ma non mi funzionano, non so se perchè sono troppo scarso (probabile) o perchè questo sito non gira su IE o perchè è necessario un login particolare.

Il minimo che dovrei ottenere è, avendo un codice specifico di un elemento, la restituzione dell''idx di quell'elemento, con questo metodo:

• Method: GET
• URL: https://xxxxx.yyyyyyyyyy.it/api/element ... XXXXXXX/id
• Response: {"idElemento":8949919}


Da qui poi si possono fare le operazioni di lettura e scrittura negli elementi.

Detto questo, metto qui la prima parte di istruzioni inviatemi dal dev del sito, con cancellati gli url reali, intanto per capire se è una cosa percorribile con VBA.

È possibile interfacciarsi con i Web Services software tramite API Rest con scambio di dati unicamente in formato JSON.
In caso di errore le API rispondono sempre con uno status code HTTP (tipicamente 500 Server Error) e il seguente JSON:
{
code: null
message: "Nome utente non valido!"
success: false
}
Dove:
code (quando presente) rappresenta un identificativo dell'errore utile per capire di che tipo di errore si tratta
message è la descrizione in un formato leggibile dall'utente dell'errore
success rappresenta lo stato della richiesta ed è utile a livello "applicativo". In caso di errore è sempre a false.
Login
Tutte le API necessitano di un JSON Web Tokens (JWT, https://jwt.io/) di autenticazione per poter funzionare.
È possibile ottenere il token di autenticazione (che ha una durata di 24 ore) tramite la chiamata di login.
Importante: qualsiasi altra chiamata dovrà contenere questo token (o verrà rifiutata con codice HTTP 403 Forbidden).
Url: http://xxx-yyy.xxxxxxxxxx.it/api/auth/login
Method: POST
Request Parameters: -
Request Body (Content-Type: application/json):
{
"username": "yyy",
"password": "xxxxxxxx"
}
Response (Content-Type: application/json):
{
"token": "eyJ0eXAiOi [...]"
}
In caso di errato login (ad esempio username non riconosciuto o password non valida) le API risponderanno con il codice di errore HTTP 401
Unauthorized.
Il token può essere decodificato facilmente grazie alle librerie messe a disposizione da JWT (si veda https://jwt.io/) e contiene diverse
informazioni utili riguardandi l'utente corrente.
È presente anche un timestamp (come da immagine qui sotto) che indica quando il Token scadrà (utile se si vuole capire quando è necessario
rinnovarlo senza incorrere in un errore 403).

Importante: negli headers di tutte le chiamate (eccetto ovviamente quella di login) è necessario passare il parametro Authorization con valore
"Bearer {token JWT ottenuto dalla chiamata di login}"


si può fare secondo voi?
Grazie
christianghz
Utente Senior
 
Post: 114
Iscritto il: 03/02/14 17:58

Sponsor
 

Re: MACRO VBA E WEB SERVICES

Postdi Anthony47 » 28/12/20 16:04

In linea di massima, "si dovrebbe poter fare". Pero' aggiungo una facile previsione: qui (sul forum) non andremo lontano...

Queste automazioni, sia che (a) avvengano tramite apertura della pagina web e poi si lavori sul codice html, e sia che (b) si ricorra a una Request e lavorando poi sul response text, queste automazioni dicevo richiedono l'interazione con la pagina del servizio per arrivare a buon fine. Da qui non si puo' fare granche'...
L'autenticazione sembra non sia un problema, visto che (mi pare di capire) fatta una autenticazione hai a disposizione un token (una specie di chiave identificativa) che dovrai inserire nelle successive richieste giornaliere.

Excel non dispone in origine di strumenti per l'elaborazione di blocchi json; per l'elaborazione delle risposte potresti lavorare sul loro testo; ma potrebbe anche essere utile cercare una libreria di terze parti compatibile col vba che consenta di lavorare sulla risposta considerando i blocchi logici delle informazioni: cerca su google "vba parse json to excel" (senza virgolette) cosi' trovi sia suggerimenti che strumenti (questo mi sembra sia ben citato: https://github.com/VBA-tools/VBA-JSON)

Ma cerca anche se il tuo strumento e' in grado di esportare i dati in formato xml; in questo caso potresti usare le librerie MSXML come facemmo ad esempio in queste discussioni:
1) viewtopic.php?t=107671#p631374
(nota che la funzione lì presentata non funziona piu' perche' ora la gran parte delle "google APIs" richiedono l'uso di una chiave nominativa (e a pagamento)

2) http://pop.pc-facile.com/forum/viewtopi ... 6&t=110596

Di piu' non saprei dirti...
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "MACRO VBA E WEB SERVICES":


Chi c’è in linea

Visitano il forum: Nessuno e 38 ospiti