2010-02-11 2 views
0

Pour un client important, je dois implémenter un SoapClient en PHP pour me connecter à une installation de service web .Net dans WsHttpBinding.Proxy entre BasicHttpBinding et WsHttpBinding

Je sais que PHP SoapClient ne le supporte pas. Donc, mon objectif est de développer un logiciel proxy écrit en C# qui sera un «pont» entre BasicHttpBinding et WsHttpBinding. Alors PHP ne communiquera qu'avec le côté BasicHttpBinding du proxy, le proxy traduira la requête en WS réel avec WsHttpBinding et retournera à PHP une réponse au format BasicHttpBinding.

C'est mon objectif, mais je commence juste en C# ... alors j'ai besoin d'aide pour le faire.

Est-ce que quelqu'un peut m'aider ou me donner des conseils?

Merci,

+0

WCF peut également faire une interface REST avec le formatage XML ou JSON. Dans le passé, j'ai trouvé que lorsque vous essayez de vous connecter à WCF à partir de langages non .Net, tels que Ruby, REST est beaucoup plus facile que SOAP. – sipwiz

+0

Je pensais que tous les clients étaient importants. C'est la principale raison pour laquelle certains d'entre eux respirent encore ... –

Répondre

1

Vous pouvez exposer deux points de terminaison dans votre service WCF:

<service name="MyCompany.MyService"> 
    <endpoint 
     address="/advanced" 
     binding="wsHttpBinding" 
     contract="MyCompany.IMyContract" /> 
    <endpoint 
     address="/simple" 
     binding="basicHttpBinding" 
     contract="MyCompany.IMyContract" /> 
    <endpoint 
     address="mex" 
     binding="mexHttpBinding" 
     contract="IMetadataExchange"/> 
    </service> 

Votre client PHP pointera vers http://mycompany.com/myservice.svc/simple et d'autres clients à http://mycompany.com/myservice.svc/advanced.

+0

Merci pour votre réponse. Malheureusement, wsHttpBinding est une contrainte qui m'est imposée. Je ne peux pas l'ignorer ou le changer. Donc, le «proxy» est la seule méthode que j'ai trouvé à passer. –

Questions connexes