Questo argomento contiene le seguenti sezioni:
Utilizzare il nodo HTTPRequest per interagire con un servizio Web, utilizzando tutto o parte del messaggio di input come richiesta inviata a quel servizio. E' possibile anche configurare il nodo per creare un nuovo messaggio di output dal contenuto del messaggio di input a cui è stato aggiunto il contenuto della risposta del servizio web prima di trasmettere il messaggio ai nodi successivi nel flusso di messaggi.
A seconda della configurazione, questo nodo crea una richiesta HTTP o HTTPS (HTTP over SSL) dal contenuto specificato del messaggio di input e la invia al servizio Web. Esso riceve la risposta dal servizio Web e la analizza per includerla nella struttura ad albero di output. Genera intestazioni HTTP se queste sono richieste dalla propria configurazione.
E' possibile utilizzare questo nodo in un flusso di messaggi che non contiene un nodo HTTPInput o HTTPReply.
Il nodo HTTPRequest gestisce i messaggi nei seguenti domini di messaggi:
Il nodo HTTPRequest è rappresentato nel workbench dalla seguente icona:
Il nodo HTTPRequest può essere utilizzato da qualsiasi flusso di messaggi che debba inviare una richiesta HTTP. L'esempio più comune che illustra questa situazione è rappresentato da un flusso di messaggi che richiama un servizio Web. Per informazioni sulle applicazioni del servizio Web, consultare Applicazioni del servizio Web.
Poiché il nodo interagisce direttamente con un servizio esterno utilizzando TCP/IP, può rilevare i seguenti tipi di errore:
Se il nodo rileva questi errori, esso genera un'eccezione, popola l'elenco di eccezioni con le informazioni relative all'errore ricevute e instrada il messaggio di input immutato al terminale failure.
La replica sarà emessa come BLOB, poiché il nodo non può stabilire in quale formato sarà la suddetta replica. Se questo nodo non è stato configurato per gestire il reindirizzamento, anche i messaggi con un codice di stato di reindirizzamento (3xx) sono gestiti allo stesso modo.
Il nodo HTTPRequest tratta i codici di stato della serie 100 come una risposta continua, elimina la risposta corrente e attende un'altra risposta dal server Web.
I codici di stato della serie 200 vengono considerati come esito positivo e la risposta è instradata sul terminale out del nodo, mentre segue le impostazioni sulle varie schede nel nodo per il formato del messaggio di output generato.
I codici di stato della serie 300 riguardano il reindirizzamento. Se la proprietà Segui reindirizzamento è selezionata, il nodo non invia nuovamente la richiesta al nuovo indirizzo specificato nella risposta ricevuta. Se la proprietà Segui reindirizzamento non è selezionata, i codici sono considerati come errori come descritto nella sezione precedente sulla gestione degli errori.
I codici di stato della serie 400 e 500 sono errori e sono gestiti come descritto nella sezione precedente sulla gestione degli errori.
Se è selezionata la proprietà Sostituisci messaggio di input con la risposta del servizio Web o la proprietà Sostituisci il messaggio di input con l'errore, l'intestazione per il messaggio di input, cioè, l'intestazione che appartiene al messaggio quando arriva al terminale IN del nodo HTTPRequest, non è trasmessa con il messaggio in uscita dal nodo HTTPRequest. Tuttavia, se viene specificata una delle proprietà che indica un'ubicazione nella struttura ad albero del messaggio, le intestazioni del messaggio di input vengono trasmesse.
L'intestazione HTTPResponse, che contiene le intestazioni restituite dal servizio Web remoto, è la prima intestazione nel messaggio che viene trasmessa dal nodo, dopo le proprietà. Ciò è vero indipendentemente dalle opzioni selezionate. Quindi, se si desidera che la replica dal nodo HTTPRequest sia inserita in una coda MQ, è necessario manipolare le intestazioni in modo che MQMD sia la prima intestazione (dopo le proprietà).
Se si sta sostituendo il messaggio di input con una risposta, è possibile copiare l'MQMD del messaggio di input nella struttura ad albero Environment prima del nodo HTTPRequest e quindi ricopiarlo nella struttura ad albero del messaggio dopo il nodo HTTPRequest. Se si sta specificando un'ubicazione per la risposta, in modo da conservare le intestazioni del messaggio di input esistenti, è necessario spostare o rimuovere l'intestazione HTTP Response in modo che MQMD sia la prima intestazione.
SET OutputRoot = InputRoot; SET OutputRoot.HTTPResponseHeader = NULL;
SET OutputRoot = InputRoot; DECLARE HTTPHeaderRef REFERENCE TO OutputRoot.HTTPResponseHeader; DETACH HTTPHeaderRef; ATTACH HTTPHeaderRef TO OutputRoot.MQMD AS NEXTSIBLING;
SET OutputLocalEnvironment.Destination.HTTP.RequestLine.Method = 'GET';
Una volta inserita un'istanza del nodo HTTPRequest in un flusso di messaggi, è possibile configurarla. Fare clic con il tasto destro del mouse sul nodo nella vista dell'editor e fare clic su Proprietà. Vengono visualizzate le proprietà base del nodo.
Tutte le proprietà obbligatorie, per le quali è necessario immettere un valore (quelle per le quali non è specificato un valore predefinito), sono contrassegnate con un asterisco nella finestra di dialogo delle proprietà.
Configurare il nodo HTTPRequest come segue:
Le prime due opzioni forniscono metodi dinamici per impostare un URL per ogni messaggio di input quando passa attraverso il flusso di messaggi. Se si desidera utilizzare una o l'altra di queste opzioni, è necessario includere un nodo Compute nel flusso di messaggi prima del nodo HTTPRequest per creare e inizializzare il valore richiesto.
La terza opzione fornisce un valore che è fisso per ogni messaggio ricevuto in questo nodo. E' necessario impostare questa proprietà in modo che contenga un'impostazione predefinita, utilizzata se gli altri campi non sono stati creati o contengono un valore null. Se un campo contiene un valore, l'impostazione di questa proprietà è ignorata. La proprietà URL del servizio Web deve contenere un URL valido o la distribuzione avrà esito negativo. E' necessario inoltre assicurare che anche il valore impostato in X-Original-HTTP-URL o LocalEnvironment.Destination.HTTP.RequestURL sia un URL valido; se non lo è, il nodo genera un'eccezione e il messaggio è trasmesso al terminale failure.
Se un URL inizia con http:// il nodo di richiesta fa una richiesta HTTP all'URL specificato. Se l'URL inizia con https:// il nodo di richiesta fa una richiesta HTTPS (HTTP over SSL) all'URL specificato, utilizzando i parametri specificati sulla scheda SSL nel nodo.
Se si seleziona HTTP/1.1, si ha la possibilità di utilizzare anche keep-alive HTTP/1.1.
Si noti che entrambe le estremità della connessione SSL devono utilizzare lo stesso protocollo, il protocollo scelto deve quindi essere un protocollo che il server remoto possa accettare.
Se si desidera che il messaggio di richiesta contenga una serie secondaria del messaggio di input, deselezionare questa casella di spunta e compilare la proprietà Ubicazione del messaggio di richiesta nell'albero.
E' possibile immettere qualsiasi riferimento di campo ESQL valido, comprese le espressioni contenute nel riferimento. Ad esempio, immettere:
InputRoot.XMLNS.ABC
Se si seleziona la casella di spunta Utilizza l'intero messaggio di input come richiesta, questa proprietà è ignorata.
Quando il contenuto appropriato della struttura ad albero del messaggio viene analizzato per creare un flusso di bit, vengono utilizzate le proprietà del messaggio (dominio, serie, tipo e formato) associate al contenuto del messaggio di input e memorizzate nella cartella delle proprietà.
Se si desidera che il messaggio di risposta del servizio web sia incluso nel messaggio di output con parte del contenuto del messaggio di input, deselezionare questa casella di spunta e compilare la proprietà Ubicazione del messaggio di risposta nell'albero. Se si deseleziona questa proprietà, il nodo copia il messaggio di input nel messaggio di output e scrive il messaggio di risposta del servizio web sul contenuto del messaggio di output nell'ubicazione specificata (il messaggio di input stesso non è modificato).
E' possibile immettere qualsiasi riferimento di campo ESQL valido, comprese le espressioni all'interno del riferimento e includendo nuovi riferimenti di campo (per creare un nuovo nodo nella struttura ad albero del messaggio per la risposta). Ad esempio, immettere:
OutputRoot.XMLNS.ABC.DEFoppure
Environment.WSReply
Se si seleziona la casella di spunta Sostituisci il messaggio di input con la risposta al servizio Web, questa proprietà è ignorata.
Quando il flusso di bit della risposta viene analizzato per creare il contenuto della struttura ad albero del messaggio, vengono utilizzate le proprietà del messaggio (dominio, serie, tipo e formato) specificate nelle proprietà Predefinite del nodo (descritte di seguito).
Se non si desidera che il nodo crei una HTTPRequestHeader per il messaggio di richiesta, deselezionare la casella di spunta Crea intestazioni HTTP predefinite dall'input (è selezionata l'impostazione predefinita). Per controllare il contenuto della HTTPRequestHeader inserita nel messaggio di richiesta, includere un nodo Compute che aggiunge una HTTPRequestHeader al messaggio di input prima di questo nodo HTTPRequest nel flusso di messaggi e deselezionare questa casella di spunta.
Esso inoltre aggiunge le intestazioni del servizio Web riportate nella seguente tabella, con i valori predefiniti, se queste non sono presenti nella HTTPRequestHeader o nella HTTPInputHeader.
Intestazione | Valore predefinito |
---|---|
SOAPAction | "" (stringa vuota) |
Content-Type | text/xml; charset=utf-8 |
Host | Il nome host a cui va inviata la richiesta |
Esso, inoltre, aggiunge l'intestazione facoltativa Content-Length con il valore calcolato corretto, anche se questo non è presente nella HTTPRequestHeader o HTTPInputHeader.
Se si desidera che il messaggio di errore del servizio Web sia incluso nel messaggio di output con parte del contenuto del messaggio di input, deselezionare la casella di spunta e compilare la proprietà Ubicazione del messaggio di errore. Se si deseleziona questa proprietà, il nodo copia il messaggio di input nel messaggio di output e scrive il messaggio di errore del servizio Web sul contenuto del messaggio di output nell'ubicazione specificata (il messaggio di input stesso non è modificato).
E' possibile immettere qualsiasi riferimento di campo ESQL valido, comprese le espressioni all'interno del riferimento e i nuovi riferimenti di campo (per creare un nuovo nodo nella struttura ad albero del messaggio per la risposta). Ad esempio, immettere:
OutputRoot.XMLNS.ABC.DEFoppure
Environment.WSError
Se si seleziona la casella di spunta Sostituisci il messaggio di input con l'errore, questa proprietà è ignorata.
Se viene restituito un messaggio di errore dal servizio web, i valori di queste proprietà sono ignorati e il messaggio viene analizzato dal programma di analisi BLOB.
Lasciare il campo Serie di messaggi vuoto per i programmi di analisi XML, XMLNS, XMLNSC, JMS, MIME e BLOB.
Lasciare il campo Tipo messaggio vuoto per i programmi di analisi XML, XMLNS, XMLNSC, JMS, MIME, BLOB e IDOC.
Lasciare il campo Formato del messaggio vuoto per i programmi di analisi XML, XMLNS, XMLNSC, JMS, MIME e BLOB.
Per ulteriori dettagli fare riferimento a Convalida dei messaggi e Proprietà della convalida per i messaggi nel dominio MRM.
Fare clic su Annulla per chiudere la finestra di dialogo ed eliminare tutte le modifiche apportate alle proprietà.
Connettere il terminale out, error o failure di questo nodo ad un altro nodo in questo flusso di messaggi per elaborare ulteriormente il messaggio, elaborare gli errori oinviare il messaggio ad una destinazione aggiuntiva. Se non si connette il terminale error, il messaggio è eliminato. Se non si connette il terminale failure, il broker fornisce l'elaborazione errori predefinita, descritta in Gestione degli errori nei flussi di messaggi.
I terminali del nodo HTTPRequest sono descritti nella seguente tabella.
Terminale | Descrizione |
---|---|
In | Il terminale di input che accetta un messaggio affinché venga elaborato dal nodo. |
Failure | Il terminale di output a cui è instradato il messaggio se viene rilevato un errore durante l'elaborazione nel nodo. |
Out | Il terminale di output a cui il messaggio è instradato se rappresenta l'avvenuto completamento della richiesta del servizio Web e se è richiesta ulteriore elaborazione all'interno di questo flusso di messaggi. |
Error | Il terminale di output per i messaggi che includono un codice di stato HTTP che non è compreso tra 200 e 299, compresi i codici di reindirizzamento (3xx) se la proprietà Segui reindirizzamento HTTP non è stata impostata. |
Le seguenti tabelle descrivono le proprietà del nodo; la colonna con l'intestazione O indica se la proprietà è obbligatoria (contrassegnata con un asterisco nella finestra di dialogo delle proprietà, se è necessario immettere un valore quando non è specificato un valore predefinito), la colonna con l'intestazione C indica se la proprietà è configurabile (è possibile modificare il valore quando si aggiunge un flusso di messaggi a un file bar per distribuirlo).
Le proprietà base del nodo HTTPRequest sono descritte nella seguente tabella.
Proprietà | O | C | Valore predefinito | Descrizione |
---|---|---|---|---|
URL del servizio Web | Sì | Sì | URL per il servizio web. È necessario fornirlo nel formato
http://<hostname>[:<port>]/[<path>] dove
|
|
Timeout di richiesta | Sì | No | 120 | Il tempo in secondi in cui il nodo attende una risposta dal servizio web. L'intervallo valido è compreso tra 1 e (231)-1. Non è possibile immettere un valore che rappresenti un valore di attesa illimitata. |
Ubicazione proxy HTTP(S) | No | Sì | Il server proxy al quale vengono inviate le richieste. Questo deve aver il formato hostname:port. | |
Segui reindirizzamento HTTP(S). | No | No | Deselezionata | Indica se sono seguiti i reindirizzamenti HTTP. Se si seleziona la casella di spunta, i reindirizzamenti sono seguiti. Se si deseleziona questa casella di spunta, i reindirizzamenti non sono seguiti. |
Versione HTTP | No | Sì | 1.0 | La versione HTTP da utilizzare per le richieste. I valori validi sono 1.0 e 1.1. |
Abilita Keep-Alive HTTP/1.1 | No | Sì | Selezionata (se la versione HTTP è 1.1) | Utilizzare Keep-Alive HTTP/1.1 |
Le proprietà SSL del nodo HTTPRequest sono descritte nella seguente tabella.
Proprietà | O | C | Valore predefinito | Descrizione |
---|---|---|---|---|
Protocollo | No | Sì | SSL | Il protocollo SSL da utilizzare quando si effettua una richiesta HTTPS. |
Cipher SSL consentite | No | Sì | Un elenco di cipher separate da virgola da utilizzare quando si effettua una richiesta SSL. Il valore predefinito di una stringa vuota indica l'utilizzo di tutte le cipher disponibili. |
Le proprietà Avanzate del nodo HTTPRequest sono descritte nella seguente tabella.
Proprietà | O | C | Valore predefinito | Descrizione |
---|---|---|---|---|
Utilizza l'intero messaggio di input come richiesta | No | No | Selezionata | Indica se l'intero contenuto del messaggio di input deve essere inviato al servizio Web. Se si seleziona questa casella di spunta, questa azione viene eseguita. Se si deseleziona questa casella di spunta, è necessario specificare Ubicazione del messaggio di richiesta nell'albero. |
Ubicazione del messaggio di richiesta nell'albero | Sì | No | InputRoot | L'ubicazione di partenza da cui è creato il flusso di bit per l'invio al servizio web. Questa proprietà assume il formato di un riferimento di campo ESQL. |
Sostituisci il messaggio di input con la risposta del servizio Web | No | No | Selezionata | Indica se il messaggio di risposta del servizio web sostituisce la copia del messaggio di input come contenuto del messaggio di output creato. Se si seleziona questa casella di spunta, questa azione viene eseguita. Se si deseleziona questa casella di spunta, è necessario specificare Ubicazione del messaggio di risposta nell'albero. |
Ubicazione del messaggio di risposta nell'albero | Sì | No | OutputRoot | L'ubicazione di partenza in cui sono memorizzati gli elementi analizzati provenienti dal flusso di bit della risposta del servizio web. Questa proprietà assume il formato di un riferimento di campo ESQL. |
Crea intestazioni HTTP predefinite dall'input | No | No | Selezionata | Indica se viene creata una HTTPRequestHeader. Se si seleziona questa casella di spunta, questa azione viene eseguita. Se si deseleziona questa casella di spunta, nel messaggio di input deve esistere una HTTPRequestHeader valida. |
Le proprietà Errore del nodo HTTPRequest sono descritte nella seguente tabella.
Proprietà | O | C | Valore predefinito | Descrizione |
---|---|---|---|---|
Sostituisci il messaggio di input con l'errore | No | No | Selezionata | Indica se il contenuto del messaggio di input debba essere sostituito dal contenuto del messaggio di errore. Se si seleziona questa casella di spunta, questa azione viene eseguita. Se si deseleziona questa casella di spunta, è necessario specificare Ubicazione del messaggio di errore. |
Ubicazione del messaggio di errore | Sì | No | OutputRoot | L'ubicazione di partenza in cui sono memorizzati gli elementi analizzati provenienti dal flusso di bit dell'errore del servizio web. Questa proprietà assume il formato di un riferimento di campo ESQL. |
Le proprietà Predefinite del nodo HTTPRequest sono descritte nella seguente tabella.
Proprietà | O | C | Valore predefinito | Descrizione |
---|---|---|---|---|
Dominio messaggi | No | No | Il dominio che sarà utilizzato per analizzare il messaggio di risposta ricevuto dal servizio web. | |
Serie di messaggi | No | No | Il nome o identificativo della serie di messaggi in cui è definito il messaggio di risposta. | |
Tipo messaggio | No | No | Il nome del messaggio di risposta. | |
Formato del messaggio | No | No | Il nome del formato fisico del messaggio di risposta. |
Le proprietà Convalida del nodo HTTPRequest sono descritte nella seguente tabella.
Fare riferimento a Proprietà della convalida per i messaggi nel dominio MRM per una descrizione completa di queste proprietà.
Proprietà | O | C | Valore predefinito | Descrizione |
---|---|---|---|---|
Convalida | No | Sì | Nessuno | Indica se viene effettuata la convalida. I valori validi sono Nessuno, Contenuto e valore, Contenuto ed Eredita. |
Azione in caso di errore | No | No | Eccezione | Indica cosa accade se la convalida ha esito negativo. E' possibile impostare questa proprietà solo se si imposta Convalida su Contenuto o Contenuto e valore. I valori validi sono Traccia utente, Registrazione errori locale, Eccezione ed Elenco di eccezioni. |
Includi tutti i vincoli valore | No | No | Selezionata | Questa proprietà non può essere modificata. L'azione predefinita, indicata dalla casella di spunta selezionata, è che i controlli del vincolo del valore base sono inclusi nella convalida Contenuto e valore. |
Correzione | No | No | Nessuno | Questa proprietà non può essere modificata. |
Le proprietà delle Opzioni generali messaggio per il nodo HTTPRequest sono descritte nella seguente tabella.
Proprietà | O | C | Valore predefinito | Descrizione |
---|---|---|---|---|
Intervallo di analisi | No | No | Su richiesta | Questa proprietà consente di controllare quando viene analizzato un messaggio di input.
I valori validi sono Su richiesta, Immediata e Completa. Fare riferimento ad Analisi su richiesta per una descrizione completa di questa proprietà. |
Utilizza programma di analisi compatto MQRFH2C per il dominino MQRFH2 | No | No | Deselezionata | Questa proprietà consente di controllare se viene utilizzato il programma di analisi compatto MQRFH2C, invece del programma di analisi MQRFH2, per le intestazioni MQRFH2. |
Le proprietà delle Opzioni del programma di analisi XMLNSC per il nodo HTTPRequest sono descritte nella seguente tabella.
Proprietà | O | C | Valore predefinito | Descrizione |
---|---|---|---|---|
Utilizza programma di analisi compatto XMLNSC per il dominio XMLNS | No | No | Deselezionata | ![]() ![]() |
Modalità di mantenimento contenuto misto | No | No | Nessuno | Questa proprietà controlla se il programma di analisi XMLNSC crea elementi nella struttura ad albero del messaggio quando rileva testo misto in un messaggio di input. I valori validi sono Nessuno e Tutti. La selezione del valore Tutti indica che gli elementi vengono creati per testo misto. La selezione del valore Nessuno indica che il testo misto viene ignorato e non viene creato alcun elemento. |
Modalità di mantenimento commenti | No | No | Nessuno | Questa proprietà controlla se il programma di analisi XMLNSC crea elementi nella struttura ad albero del messaggio quando rileva commenti in un messaggio di input. I valori validi sono Nessuno e Tutti. La selezione del valore Tutti indica che vengono creati elementi per i commenti. La selezione del valore Nessuno indica che i commenti vengono ignorati e non viene creato alcun elemento. |
Modalità di mantenimento delle istruzioni di elaborazione | No | No | Nessuno | Questa proprietà controlla se il programma di analisi XMLNSC crea elementi nella struttura ad albero del messaggio quando rileva istruzioni di elaborazione in un messaggio di input. I valori validi sono Nessuno e Tutti. La selezione del valore Tutti indica che vengono creati elementi per le istruzioni di elaborazione. La selezione del valore Nessuno indica che le istruzioni di elaborazione vengono ignorate e non viene creato alcun elemento. |
Le proprietà Descrizione del nodo HTTPRequest sono descritte nella seguente tabella.
Proprietà | O | C | Valore predefinito | Descrizione |
---|---|---|---|---|
Descrizione breve | No | No | Una breve descrizione del nodo. | |
Descrizione completa | No | No | Testo che descrive lo scopo del nodo nel flusso di messaggi. |