2011-08-14 1 views
-2

De mon WSDL J'ai la partie service suivant:WSDL 1.1 Question de base sur le code Apex terminal salesforce

<service name="BAPI_CUSTOMER_DISPLAYService"> 
    <documentation>SAP Service BAPI_CUSTOMER_DISPLAY via SOAP</documentation> 
    <port name="BAPI_CUSTOMER_DISPLAYPortType" binding="s0:BAPI_CUSTOMER_DISPLAYBinding"> 
    <soap:address location="http://2.3.4.100:8000/sap/bc/soap/rfc"/> 
    </port> 
</service> 

alors ce sera la référence endpoint pour cela?

Je le donne comme "http://2.3.4.100:8000/sap/bc/soap/rfc" dans mon client Salesforce et il donne l'erreur suivante. "Ce service nécessite un certificat client pour la procédure d'authentification."

Je suis sûr que je dois donner nom d'utilisateur et mot de passe ne sachant pas comment je peux les définir dans mon client qui est un code Apex.

L'aide est appréciée.

+0

Avez-vous déjà généré votre classe Apex à partir du WSDL? Si ce n'est pas le cas, lisez les documents Salesforce sur [générer des classes à partir de WSDLS:] (http://www.salesforce.com/us/developer/docs/apexcode/index_Left.htm#StartTopic=Content/apex_callouts_wsdl2apex.htm) et en publier d'autres. des détails sur ce qu'est exactement votre problème. – Paddyslacker

+0

Oui Paddy j'ai généré la classe Apex stub à partir de WSDL. Mais depuis ma classe Controller j'essaye de faire une légende en utilisant @future ce bout je peux entrer dans la méthode mais quand l'invocation se produit puisque le point final n'est pas public et je dois y accéder par nom d'utilisateur et mot de passe échoue. Mais je ne sais pas comment définir le nom d'utilisateur et mot de passe pour accéder au point de terminaison sur le talon pour consommer le service web sur SAP. J'espère que vous comprenez le problème maintenant. Si vous voulez plus de détails je peux fournir. Merci encore pour votre aide. – jay

+0

Que voulez-vous dire par "le point de terminaison n'est pas public"? Le service Web auquel vous essayez d'accéder (celui défini dans le WSDL) est-il accessible depuis le Web? – Paddyslacker

Répondre

0

J'ai importé le WSDL d'entreprise et utilisé l'URI à partir du loginResult. Voici du code de mon projet:

LoginResult loginResult = null; // Login Result (save and make static) 
SessionHeader sessionHeader = null; // Session Header (save and make static) 
SoapClient soapClient = null; // This is the Enterprise WSDL 
SecureStatusClient SecureStatusClient = null; // This is my custom @WebService 

// Create Login Request 
LoginScopeHeader loginScopeHeader = new LoginScopeHeader 
{ 
    organizationId = configuration["OrganizationId"], 
    portalId = configuration["PortalId"] 
}; 

// Call Login Service 
string userName = configuration["UserName"]; 
string password = configuration["Password"]; 
string securityToken = configuration["SecurityToken"]; 
using (SoapClient loginClient = new SoapClient()) 
{ 
    loginResult = loginClient.login(loginScopeHeader, userName, password + securityToken); 

    if (result.passwordExpired) 
    { 
     string message = string.Format("Salesforce.com password expired for user {0}", userName); 
     throw new Exception(message); 
    } 
} 

// Create the SessionHeader 
sessionHeader = new SessionHeader { sessionId = loginResult.sessionId }; 

// Create the SoapClient to use for queries/updates 
soapClient = new SoapClient(); 
soapClient.Endpoint.Address = new EndpointAddress(loginResult.serverUrl); 

// Create the SecureStatusServiceClient 
secureStatusClient = new SecureStatusServiceClient(); 
Uri apexUri = new Uri(SoapClient.Endpoint.Address.Uri, "/services/Soap/class/SecureStatusService"); 
secureStatusClient.Endpoint.Address = new EndpointAddress(apexUri); 
+0

Si je comprends bien, vous essayez de faire un appel aux services Salesforces d'autres modules salesforce etc. Dans mon cas, j'essaie de consommer le service SAP dans le code apex de salesforce. L'aide est appréciée à ce sujet. Merci – jay

Questions connexes