WSDL 1.1 Основной вопрос о конечной точке продаж Apex-код - PullRequest
0 голосов
/ 14 августа 2011

Из моего WSDL у меня есть следующая служебная часть:

<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>

тогда какой будет ссылка на конечную точку для этого?

Я задаю его как "http://2.3.4.100:8000/sap/bc/soap/rfc" в моем клиенте Salesforce, и он выдает следующую ошибку. «Для этой услуги требуется сертификат клиента для процедуры аутентификации.»

Я уверен, что мне нужно дать имя пользователя и пароль, не зная, как я могу установить их в моем клиенте, который является кодом Apex.

Помощь приветствуется.

1 Ответ

0 голосов
/ 16 августа 2011

Я импортировал Enterprise WSDL и использовал URI из loginResult.Вот код из моего проекта:

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);
...