Comment utiliser le canal interne du web service
Bonjour,
J'ai une documentation et un WSDL, jusqu'ici c'est plutôt des bonnes nouvelles.
J'ai importé le WSDL en référence et je retrouve bien OrderServiceV1_10PortChannel.
La documentation indique que le header doit être envoyé à chaque appelle et donne l'exemple ci-dessous.
Code:
1 2 3 4 5 6 7 8 9
| using (new OperationContextScope(api.InnerChannel))
{
var httpRequestProperty = new HttpRequestMessageProperty();
httpRequestProperty.Headers[System.Net.HttpRequestHeader.Authorization] = "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes("11111111111111:pppppppp"));
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty;
// Appel à une méthode du service
api.method(...);
} |
J'ai créé une application console pour tester
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| static void Main(string[] args)
{
var api = new apiSp2Web.OrderServiceV1_10PortChannel();
using (new OperationContextScope(api))
{
var httpRequestProperty = new HttpRequestMessageProperty();
httpRequestProperty.Headers[System.Net.HttpRequestHeader.Authorization] = "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes("11111111111111:pppppppp"));
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty;
// Appel à une méthode du service
// api.method(...);
var response = api.OrderStatus("838-488-931");
}
} |
Le soucis (ou pas) est que OrderServiceV1_10PortChannel est une interface et que je ne peux pas créer de nouvelle instance.
Code:
1 2
|
public interface OrderServiceV1_10PortChannel : apiSp2Web.OrderServiceV1_10Port, System.ServiceModel.IClientChannel |
Pouvez-vous m'expliquer ce que je fais mal ?
Merci par avance.
Gshin