29/01/22 22:36
dylan666
Ciao a tutti,
sto approcciando un primo (goffo) tentativo di sfruttare i webservice di un servizio particolare.
Per la parte di accesso "classico" l'approccio è abbastanza standard:
Esiste però una variante di accesso in cui (oltre a username e password) si deve passare anche un header personalizzato chiamato "CustomerName" in cui va passato un nome (es. "Azienda1".
La cosa funziona se metto l'header a mano ad esempio in Postman (dove per la verità uso Rest che mi è un po' più comodo) ma non ho capito come ottenere la stessa cosa nel codice sopra.
Da qualche parte ho letto dell'usare "BeforeSendRequest" e un codice come questo:
Ma non ho capito ne dove inserire la funzione ne come richiamarla...
Grazie a che avrà la pazienza di spiegarmelo
sto approcciando un primo (goffo) tentativo di sfruttare i webservice di un servizio particolare.
Per la parte di accesso "classico" l'approccio è abbastanza standard:
Imports MyServicePROXY.MyFirst_ServiceReference Imports System.ServiceModel Public Class Form1 Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click Dim EndpointUriSoapun As String = "https://" & txt_Domain.Text & "/myservice/v0001/soapun" Dim binding As BasicHttpsBinding = New BasicHttpsBinding() Dim address As EndpointAddress = New EndpointAddress(EndpointUriSoapun) binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic binding.MaxReceivedMessageSize = Integer.MaxValue binding.ReceiveTimeout = New System.TimeSpan(0, 20, 0) binding.SendTimeout = New System.TimeSpan(0, 20, 0) Dim client As MyServiceClient = New MyServiceClient(binding, address) client.ClientCredentials.UserName.UserName = "Test" client.ClientCredentials.UserName.Password = "Test" Net.ServicePointManager.SecurityProtocol = 3072 'DA QUI IN POI CONTINUA IN MANIERA A ME NOTA End Class
Esiste però una variante di accesso in cui (oltre a username e password) si deve passare anche un header personalizzato chiamato "CustomerName" in cui va passato un nome (es. "Azienda1".
La cosa funziona se metto l'header a mano ad esempio in Postman (dove per la verità uso Rest che mi è un po' più comodo) ma non ho capito come ottenere la stessa cosa nel codice sopra.
Da qualche parte ho letto dell'usare "BeforeSendRequest" e un codice come questo:
Public Function BeforeSendRequest(ByRef request As Message, ByVal channel As IClientChannel) As Object Dim httpRequest As Channels.HttpRequestMessageProperty httpRequest.Headers.Add("CustomerName", "Azienda1") Return Nothing End Function
Ma non ho capito ne dove inserire la funzione ne come richiamarla...
Grazie a che avrà la pazienza di spiegarmelo
Ultima modifica effettuata da dylan666 29/01/22 22:42
aaa