[PHP] Web app Rest chiamata Get

Stato
Chiusa ad ulteriori risposte.

Alberto Simonazzi

Nuovo Utente
31 Ago 2018
6
0
1
Buongiorno a Tutti!!

dovrei fare una chiamata in PHP ad una WebApp di tipo REST ma la documentazione fornita con l'API è molto limitata, quindi non so davvero come chiamare il servizio.

Ho già fatto chiamate a WebApp di tipo Soap e non ho mai avuto problemi, ma col servizio di Tipo Restfull non ho proprio esperienza.

Ho provati vari codici in giro in Curl ma senza successo. Se potete darmi una Dritta o un sito di riferimento per comunicare con una App di tipo Restfull mi fareste un grosso favore.

Qui sotto vi metto i dettagli Fornitemi della App oltre ad allegare il Pdf nella discussione:

Grazie a tutti in anticipo

Alberto

Dati Personali per Accedere all'App:

Host: si-totem40.servizitalia.spa:8080
Username: newfleurws,
Password: nfws123
QueryString: ?sito=FL002&destinatario=E000025


WEB SERVICE GESTIONE CONSEGNE

1.TECNOLOGIA

Il web service è un servizio rest, che utilizza la Basic Authentication per l’autenticazione.
Il servizio risponde ad una chiamata http GET.

Esempio di chiamata al Web Service presa dall’ app. PostMan

GET /newFleurWs/resources/consegne?sito=CA001&destinatario=013864 HTTP/1.1
Host: localhost:8093
Authorization: Basic YmlhbmNhOjFub25sYXNvISEh
Cache-Control: no-cache
Postman-Token: 2fbd993e-dd60-50ab-a05f-c3ecf10cb63b

La chiamata è composta dell’header del messaggio e non ha un corpo essendo una GET.
Il servizio restituisce un stringa in formato JSON

2.MODALITÀ ACCESSO AL WEB SERVICE

Il web service è accessibile attraverso l’indirizzo: {NOME_HOST}/newFleurWs/resources/consegne

A questo indirizzo andranno aggiunti due parametri da legare all’URL per mezzo di una query string che rappresenta i parametri di input per il servizio: il primo è il codice del sito produttivo di cui ci interessa sapere la lavorazione, il secondo il codice del destinatario di cui vogliamo sapere le consegne:

Esempio di query-string
?sito=CA001&destinatario=013864
Nome parametri
Valore parametri

Inoltre si dovrà effettuare un’autenticazione col metodo basic access authentication, inserendo l’ header HTTP Authorization costituito da:

1. Username e password uniti nella stringa "username:password"
2. Il risultato codificato con base64
3. Il metodo di autorizzazione (basic) e uno spazio sono inseriti all'inizio della stringa codificata.

Esempio di header HTTP Authorization
Authorization: Basic YmlhbmNhOjFub25sYXNvISEh

3.RISPOSTA DEL WEB SERVICE

La risposta del servizio è costituita da un JSON costituito da due sotto elementi:
Nel caso di errore dalla proprietà Status e dalla proprietà Message che descrive l’errore, in
caso di esito positivo della chiamata avrà sempre il valore Status e come seconda proprietà Result un
array che contiene i records da ritornare.
Status è una proprietà di controllo per capire se la chiamata è andata a buon fine o no, esso
assumerà valore 0 in caso di fallimento, 1 in caso di riuscita.

Esempio di JSON restituito da un esito positivo:

{"Status":1,"Result":[{"codiceDestinatario":"013864","descrizioneDestinatario":"PIANO
1","codiceArticolo":"000946B","descrizioneArticolo":"COPRIMACCHIA 100X100 ROSAUHF","
dotazioneAggiornata":-
151,"qtaPacco":20,"riportoPartite":161,"partitaDaProdurre":0,"creditoDaEvadere":161,"daProdurre"
:161,"prodotta":0,"stato":"Attiva"},{"codiceDestinatario":"013864","descrizioneDestinatario":"PIAN
O 1","codiceArticolo":"014543B","descrizioneArticolo":"CASACCA UNISEX S.O. COL. AVIOUHF","
dotazioneAggiornata":-
168,"qtaPacco":5,"riportoPartite":218,"partitaDaProdurre":0,"creditoDaEvadere":218,"daProdurre":
218,"prodotta":0,"stato":"Attiva"},{"codiceDestinatario":"013864","descrizioneDestinatario":"PIANO
1","codiceArticolo":"014544B","descrizioneArticolo":"PANTALONE UNISEX S.O. COL. AVIOUHF","
dotazioneAggiornata":-
226,"qtaPacco":5,"riportoPartite":262,"partitaDaProdurre":0,"creditoDaEvadere":262,"daProdurre":
262,"prodotta":0,"stato":"Attiva"},{"codiceDestinatario":"013864","descrizioneDestinatario":"PIANO
1","codiceArticolo":"018943B","descrizioneArticolo":"LENZUOLO CAN.MISTO
C/STAMP.CM160X290-UHF","dotazioneAggiornata":-
85,"qtaPacco":10,"riportoPartite":0,"partitaDaProdurre":0,"creditoDaEvadere":0,"daProdurre":0,"pr
odotta":0,"stato":"Attiva"}]}

Esempio di JSON restituito da un esito negativo:

{"Status":0,"Message":"Site not found"}
 

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.182
312
83
Non è consentito aprire 2 discussioni uguali!
Per quale motivo lo fai?
 

Alberto Simonazzi

Nuovo Utente
31 Ago 2018
6
0
1
La prima la volevo Eliminare!! Ma non so come si fa! Se la modificavo mi dava errore come span e quindi ne ho creata una nuova
 

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.182
312
83
Perchè la dovresti eliminare?
Le discussioni non si eliminano! Solo i membri dello staff possono farlo se è il caso!
Continua la!
 

Alberto Simonazzi

Nuovo Utente
31 Ago 2018
6
0
1
Grazie comunque per la Risposta!! Adesso sto provando col Curl

Ma mi sa che i dati Forniti dal mio Cliente non siano corretti in quanto non ottengo nessuna risposta dal server… neanche negativa...

Mettendo altri host almeno ho delle risposte...

Qui metto il codice che ho usato:

$url = "http:/si-totem40.servizitalia.spa";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
$headers = array(
'GET /newFleurWs/resources/consegne?sito=FL002&destinatario=E000025 HTTP/1.1',
'Host: localhost:80',
'Authorization: Basic bmV3ZmxldXJ3czpuZndzMTIz',
'Cache-Control: no-cache',
'Postman-Token: 2fbd993e-dd60-50ab-a05f-c3ecf10cb63b'
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

//curl_setopt($ch, CURLOPT_NOBODY, TRUE); // remove body
$head = curl_exec($ch);


curl_close($ch);
var_dump($head);

Grazie Ancora e Buona Notte!!
 
Stato
Chiusa ad ulteriori risposte.