Gestione dei flussi HTTP

Questo argomento fornisce informazioni che possono essere utili se si stanno utilizzando flussi di messaggi HTTP per interagire con i servizi Web. Andrebbero lette insieme alla successiva sezione Scenari dei servizi Web.

HTTPS
Per supporto nell'utilizzo di HTTPS consultare Implementazione dell'autenticazione SSL.
Impostazione del codice di stato HTTP per una replica
Il codice di stato HTTP predefinito è 200, che indica l'esito positivo. Per ottenere un differente codice di stato da restituire:
  • Impostare il codice di stato nel campo Destination.HTTP.ReplyStatusCode nel LocalEnvironment (OutputLocalEnvironment nome di correlazione). In questo modo ogni codice di stato viene sovrapposto in un HTTPResponseHeader come descritto di seguito.
  • Se un nodo HTTPRequest precede il nodo HTTPReply nel flusso, allora sarà stato creato un HTTPResponseHeader nell'albero logico, a rappresentare le intestazioni HTTP nella risposta da un altro servizio Web. Per convenienza, selezionando la proprietà del nodo HTTPReply Crea intestazioni HTTP predefinite dalla replica o dalla risposta, i valori da questa intestazione vengono usati come valori predefiniti per la creazione di messaggi di risposta, consentendo l'impostazione del codice di stato nel campo X-Original-HTTP-Status-Code in HTTPResponseHeader. È anche possibile impostare questo campo in un HTTPReplyHeader, ma è consigliato l'utilizzo di LocalEnvironment piuttosto che quanto descritto in precedenza.
Utilizzo di LocalEnvironment.Destination.HTTP.RequestIdentifier
Quando il nodo HTTPInput riceve un messaggio di richiesta di input, esso imposta il campo di LocalEnvironment Destination.HTTP.RequestIdentifier su un valore univoco che identifica il client del servizio Web che ha inviato la richiesta. E' possibile fare riferimento a questo valore e salvarlo in un'altra ubicazione, se ritenuto opportuno.

Ad esempio, se si progetta una coppia di flussi di messaggi che interagiscono con un'applicazione WebSphere MQ esistente (come descritto in Richiamo del broker di un servizio Web esistente), è possibile salvare questo valore nel flusso di richiesta e ripristinarlo nel flusso di replica per garantire che a ricevere la replica sia il client giusto. In questo caso, non si devono modificare i dati ed è necessario conservare i dati come BLOB.

Il nodo HTTPReply estrae questo valore da LocalEnvironment ed imposta la replica in modo che sia inviata al client specifico.

Se si progetta un flusso di messaggi che include sia un nodo HTTPInput che un nodo HTTPReply, il valore è impostato in LocalEnvironment dal nodo HTTPInput, ma il nodo HTTPReply non lo utilizza. Perciò se il flusso di messaggi include entrambi i nodi ed un nodo Compute nello stesso flusso, non è necessario includere la struttura ad albero LocalEnvironment quando si specifica quali componenti dell'albero del messaggio sono copiati dal messaggio di input al messaggio di output dal nodo Compute (la proprietà Modalità di calcolo).

Impostazione dinamica dell'URL del nodo HTTPRequest
E' possibile impostare la proprietà URL del servizio Web predefinito sul nodo HTTPRequest per stabilire l'URL di destinazione per una richiesta del servizio Web. E' possibile configurare un nodo Compute prima del nodo HTTPRequest all'interno del flusso di messaggi per sovrascrivere il valore impostato nella proprietà. Codificare ESQL che memorizza una stringa URL in LocalEnvironment.Destination.HTTP.RequestURL; questa è richiamata dal nodo HTTPRequest e utilizzata al posto del valore della proprietà del nodo.

Sebbene sia anche possibile impostare l'URL di richiesta nell'intestazione speciale X-Original-HTTP-URL nella sezione HTTPRequestHeader del messaggio di richiesta (che sovrascrive tutte le altre impostazioni) in un nodo Compute, si consiglia di utilizzare il contenuto di LocalEnvironment a questo scopo.

Impostazione di Crea intestazioni HTTP predefinite dalla risposta per il nodo HTTPReply
Se si seleziona la casella di spunta Crea intestazioni HTTP predefinite dalla risposta nella finestra di dialogo delle proprietà del nodo HTTPReply, il nodo include una serie minima di intestazioni nella risposta inviata al client del servizio Web.
Se si desidera impostare un'intestazione esplicitamente, crearla in HTTPReplyHeader. Ad esempio, un nodo Compute che trasmette un messaggio nel dominio XMLNS e intende modificare Content-Type potrebbe adottare la seguente procedura:
CALL CopyMessageHeaders();
SET OutputRoot.HTTPReplyHeader."Content-Type" = 'text/xml';
SET OutputRoot.XMLNS = InputRoot.XMLNS;

Nel caso particolare di Content-Type, non impostare questa intestazione utilizzando la proprietà ContentType, a meno che non si stia operando nel dominio MIME. La proprietà ContentType è intesa in modo specifico per impostare il valore di Content-Type utilizzato in MIME.

La serie completa delle intestazioni HTTP utilizzate nella richiesta è creata selezionando le intestazioni tramite il seguente algoritmo:
  1. Selezionare le intestazioni in HTTPReplyHeader.
  2. Se, fino a questo momento, non è stata definita alcuna intestazione Content-Type, crearne una utilizzando qualsiasi valore che non sia vuoto nella proprietà ContentType.
  3. Selezionare le intestazioni in HTTPResponseHeader (un'HTTPResponsHeader è trasmessa come restituzione da un nodo HTTPRequest).
  4. Se, fino a questo momento, non è stata definita alcuna intestazione Content-Type, crearne una con il valore predefinito text/xml; charset=utf-8
  5. Creare o sovrascrivere l'intestazione Content-Length.
Attenzione: il nodo HTTPReply riscrive sempre l'intestazione Content-Length, anche se è stata deselezionata la casella di spunta Crea intestazioni HTTP predefinite dalla risposta. Questo serve a garantire che il contenuto sia corretto.

Se nel messaggio ricevuto dal nodo HTTPReply esisteva una sezione HTTPReplyHeader e il terminale Output del nodo HTTPReply è connesso, la sezione HTTPReplyHeader è aggiornata con qualsiasi valore modificato o aggiunto.

Impostazione di Crea intestazioni HTTP predefinite dall'input per il nodo HTTPRequest
Se si seleziona la casella di spunta Crea intestazioni HTTP predefinite dall'input nella finestra di dialogo delle proprietà del nodo HTTPRequest, il nodo include una serie minima di intestazioni nella richiesta inviata al server.
Se si desidera impostare un'intestazione esplicitamente, crearla in HTTPRequestHeader. Ad esempio, un nodo Compute che trasmette un messaggio nel dominio XMLNS e intende modificare Content-Type potrebbe adottare la seguente procedura:
CALL CopyMessageHeaders();
SET OutputRoot.HTTPRequestHeader."Content-Type" = 'text/xml';
SET OutputRoot.XMLNS = InputRoot.XMLNS;
Nel caso particolare di Content-Type, non impostare questa intestazione utilizzando la proprietà ContentType, a meno che non si stia operando nel dominio MIME. La proprietà ContentType è intesa in modo specifico per impostare il valore di Content-Type utilizzato in MIME.
La serie completa delle intestazioni HTTP utilizzate nella richiesta è creata selezionando le intestazioni tramite il seguente algoritmo:
  1. Impostare l'intestazione Host, in base all'URL della richiesta o alla sezione HTTPRequestHeader del messaggio.
  2. Selezionare le intestazioni HTTPRequestHeader.
  3. Se, fino a questo momento, non è stata definita alcuna intestazione Content-Type, crearne una utilizzando qualsiasi valore che non sia vuoto nella proprietà ContentType.
  4. Selezionare le intestazioni in HTTPInputHeader (un'HTTPInputHeader è creata automaticamente da un nodo HTTPInput).
  5. Se, fino a questo momento, non è stata definita alcuna intestazione Content-Type, crearne una con il valore predefinito text/xml; charset=utf-8
  6. Se, fino a questo momento, non è stata definita alcuna intestazione SOAPAction, crearne una con il valore predefinito ''
  7. Creare o sovrascrivere l'intestazione Content-Length.
Attenzione: il nodo HTTPRequest riscrive sempre l'intestazione Content-Length, anche se è stata deselezionata la casella di spunta Crea intestazioni HTTP predefinite dall'input o dalla richiesta. Questo serve a garantire che il contenuto sia corretto.

Se esiste un'HTTPRequestHeader nel messaggio ricevuto, HTTPRequestHeader viene aggiornata con qualsiasi valore modificato o aggiunto.

Inizio modificaRaccolta della traccia HTTPListener in caso di problemi con HTTPFine modifica
Inizio modificaIn caso di problemi con HTTP, è possibile tenere traccia di HTTPListener:
  1. Avviare la traccia utilizzando il comando mqsichangetrace.
  2. Visualizzare la registrazione di traccia HTTPListener utilizzando il comando mqsireadlog con il qualificatore HTTPListener per il parametro -b.
Fine modifica
Concetti correlati
WebSphere MQ Web Services Transport
Creazione di WSDL
Attività correlate
Creazione di un flusso di messaggi
Distribuzione
Verifica dei risultati della distribuzione
Riferimenti correlati
Nodo HTTPInput
Nodo HTTPReply
Nodo HTTPRequest
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ac20450_