Diversi motori di servizi Web indirizzano le richieste in arrivo a particolari implementazioni di servizi Web in modo diverso.
Hai detto "servizi web", ma non hai specificato l'uso di SOAP. Ho intenzione di assumere SOAP.
Il SOAP 1.1 specification dice ...
Il SOAPAction HTTP campo di richiesta di intestazione può essere utilizzato per indicare l'intento della richiesta HTTP SOAP. Il valore è un URI che identifica l'intento. SOAP non pone restrizioni sul formato o specificità dell'URI o che sia risolvibile. Un client HTTP DEVE utilizzare questo campo di intestazione quando si invia una richiesta HTTP SOAP.
maggior parte dei motori di servizi web sono conformi alle specifiche, e quindi utilizzare l'intestazione SOAPAction:
. Questo ovviamente funziona solo con le trasmissioni SOAP-over-HTTP
.
Quando HTTP non viene utilizzato (ad esempio, TCP o altri), il motore dei servizi Web deve ricorrere a qualcosa. Molti usano il payload del messaggio, in particolare il nome dell'elemento di livello superiore nel frammento XML all'interno dello soap:envelope
. Ad esempio, il motore potrebbe guardare a questo messaggio in arrivo:
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<soap:Body>
<m:GetAccountStatus xmlns:m="Some-URI">
<acctnum>178263</acctnum>
</m:GetAccountStatus>
</soap:Body>
</soap:Envelope>
... trovare l'elemento GetAccountStatus
, e quindi indirizzare la richiesta in base a questo.
Viene visualizzato un errore quando si tenta di ottenere la risposta con ciò che è stato scritto per questo 'using (HttpWebResponse response = (HttpWebResponse) request.GetResponse())', su quella riga.C'è un altro modo per ottenere la risposta? Dice non noto, 'GetResponse()'. –