Adapter di ricezione HTTP
L'indirizzo di ricezione dell'adapter di ricezione HTTP è costituito da un URL distinto configurato tramite la Console di amministrazione BizTalk Server.
È possibile configurare l'adapter di ricezione HTTP per l'invio asincrono o sincrono dal client. Gli invii asincroni sono invii unidirezionali, mentre gli invii sincroni sono invii bidirezionali o di tipo richiesta-risposta.
Per l'autenticazione e l'autorizzazione delle richieste in ingresso è possibile utilizzare le impostazioni di sicurezza di IIS.
Richieste HTTP GET e HTTP POST
L'adapter di ricezione HTTP può ricevere messaggi in due modi, ovvero tramite richieste HTTP POST o richieste HTTP GET.
Quando un adapter di ricezione HTTP riceve messaggi tramite una richiesta HTTP POST, si verifica la sequenza di eventi descritta di seguito:
L'URL configurato in BizTalk Server riceve un nuovo messaggio sull'indirizzo di ricezione.
L'adapter di ricezione crea un oggetto messaggio BizTalk per consentire l'invio del messaggio al server.
L'adapter di ricezione crea l'oggetto messaggio BizTalk con una sola parte, ovvero la parte corpo.
Dopo la lettura e l'invio del messaggio al server, l'adapter di ricezione HTTP invia al client il codice HTTP 202 per indicare che la richiesta è stata accettata.
Facoltativamente, l'adapter di ricezione HTTP può inviare un token di correlazione del messaggio nella risposta HTTP. Il token rappresenta il messaggio in BizTalk Server. Se l'indirizzo di ricezione HTTP è in una porta richiesta-risposta, l'adapter restituisce il codice di riuscita 200 insieme al messaggio di risposta.
Quando un adapter di ricezione HTTP elabora i messaggi di una richiesta HTTP GET, crea un oggetto messaggio BizTalk e inserisce la stringa di query decodificata della richiesta HTTP GET nella parte corpo del messaggio BizTalk. L'adapter HTTP seleziona la stringa di query inserita nella parte corpo del messaggio BizTalk utilizzando l'algoritmo seguente:
Se l'adapter di ricezione HTTP riceve una richiesta HTTP GET, divide la stringa URI in ingresso in due parti, utilizzando il simbolo di punto interrogativo (?) come delimitatore.
La prima parte della stringa URI, la parte prima del delimitatore del punto interrogativo, viene copiata nella proprietà InboundTransportLocation nel contesto del messaggio. La proprietà InboundTransportLocation identifica in modo univoco la posizione in cui BizTalk Server ricevuto il messaggio. Il motore utilizza questa proprietà per determinare l'indirizzo di ricezione da eseguire per il messaggio.
La seconda parte della stringa, ovvero quella che segue il delimitatore, viene decodificata e copiata nella parte corpo del messaggio BizTalk.
Se dall'adapter di ricezione HTTP viene ricevuta un'operazione HTTP GET o HTTP POST vuota, questa viene rifiutata.
Elaborazione di una richiesta GET con l'adapter di ricezione HTTP
Di seguito sono illustrati alcuni esempi del modo in cui l'adapter di ricezione HTTP elabora i messaggi ricevuti tramite richieste HTTP GET. Negli esempi si presuppone che l'adapter di ricezione HTTP sia configurato con i due indirizzi di ricezione seguenti:
/vroot/BTSHTTPReceive.dll
/vroot/BTSHTTPReceive.dll?LocationID=1
Data la seguente richiesta HTTP GET per il client:
http://servername/vroot/BTSHTTPReceive.dll?LocationID=1
L'azione eseguita dall'adapter di ricezione HTTP è la seguente:
Impostare la proprietà InboundTransportLocation nel contesto del messaggio uguale a /vroot/BTSHTTPReceive.dll e la parte del corpo dell'oggetto Messaggio BizTalk uguale a LocationID=1.
Data la seguente richiesta HTTP GET per il client:
http://servername/vroot/BTSHTTPReceive.dll?LocationID=1&MyParam=My%20Value
L'azione eseguita dall'adapter di ricezione HTTP è la seguente:
Impostare la proprietà InboundTransportLocation su /vroot/BTSHTTPReceive.dll e la parte del corpo dell'oggetto Messaggio BizTalk uguale a LocationID=1&MyParam=My Value.
Data la seguente richiesta HTTP GET per il client:
http://servername/vroot/BTSHTTPReceive.dll
L'azione intrapresa dall'adapter di ricezione HTTP è la seguente:
La richiesta viene rifiutata a causa della formattazione non corretta della richiesta HTTP GET.
Supporto dell'invio in batch per l'adapter di ricezione HTTP
L'adapter di ricezione HTTP invia i messaggi al server in batch. Le dimensioni del batch utilizzato per l'invio dei messaggi al server possono essere configurate nel gestore di ricezione dell'adapter HTTP.
Supporto dell'adapter di ricezione HTTP per la sospensione delle richieste non riuscite
L'adattatore di ricezione HTTP BizTalk Server ha un'impostazione di configurazione, Sospendi richieste non riuscite, per controllare cosa accade con una richiesta HTTP se l'elaborazione in ingresso non riesce a causa di un errore della pipeline di ricezione, un errore di mapping o un errore di routing. Per questa impostazione sono disponibili due valori:
Risposta errata. Si tratta dell'impostazione predefinita. L'adapter di ricezione HTTP ignora i messaggi per i quali non è possibile eseguire l'elaborazione in ingresso a causa di un problema della pipeline di ricezione o di un errore di mapping o di routing. Viene inoltre inviato al client il codice di stato di errore 401 o 500.
Risposta esatta. L'adapter di ricezione HTTP sospende i messaggi per i quali non è possibile eseguire l'elaborazione in ingresso a causa di un problema della pipeline di ricezione o di un errore di mapping o di routing. Per le porte di ricezione unidirezionale viene inviato al client un codice di stato accettato 202. Per le porte di ricezione bidirezionali viene inviato al client un codice di stato errore 500.
Supporto della codifica Chunked per l'adapter di ricezione HTTP
L'adapter di ricezione HTTP accetta richieste HTTP con messaggi al cui corpo è applicata la codifica Chunked. L'adapter di ricezione utilizza la codifica Chunked per inviare messaggi di risposta quando le dimensioni del corpo superano i 4 KB. La codifica in blocchi può essere disattivata impostando la voce del Registro di sistema DWORD descritta in Configurazione dell'adapter HTTP e Parametri di ottimizzazione
Certificati client per l'adapter di ricezione HTTP
Quando si utilizza una connessione sicura con un certificato client per l'indirizzo di ricezione HTTP, l'adapter di ricezione HTTP ottiene l'identificazione personale del certificato client da Microsoft Internet Information Services (IIS) e lo aggiunge al contesto di tutti i messaggi ricevuti tramite HTTPS su tale indirizzo. L'adapter di ricezione HTTP imposta le proprietà di sistema seguenti:
SourcePartyEvidenceQualifier = "Certificate"
SourcePartyEvidence = <certificate thumbprint>
Codici di stato restituiti dall'adapter di ricezione HTTP
Di seguito sono elencati i codici di stato restituiti dall'adapter di ricezione HTTP.
200 OK. L'adapter ha elaborato correttamente il messaggio di richiesta e ha generato una risposta. L'adapter restituisce questo codice di stato nella risposta HTTP dalla porta richiesta-risposta HTTP.
202 - Messaggio accettato. L'adapter ha inviato correttamente il messaggio al server o una richiesta unidirezionale è sospesa. L'adapter restituisce questo codice di stato nella risposta HTTP da una porta di ricezione HTTP unidirezionale.
401 - Accesso negato. La richiesta HTTP è stata ricevuta su una porta di ricezione con autenticazione necessaria e il controllo di sicurezza su tale messaggio non è riuscito, ad esempio l'entità non è stata risolta o il messaggio non è stato decrittografato.
500 - Errore interno del server. Si è verificato un errore generale di elaborazione della richiesta HTTP. Il messaggio non viene sospeso da BizTalk Server a meno che l'impostazione di configurazione Sospendi richieste non riuscite sia impostata su True per una porta di ricezione bidirezionale.