2011-08-14 72 views
-2

從我的WSDL我有以下服務部分:WSDL 1.1基本問題

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

那麼什麼將是這個端點引用?

我在我的salesforce客戶端以「http://2.3.4.100:8000/sap/bc/soap/rfc」的形式給出它,並給出以下錯誤。 「此服務需要客戶端證書進行驗證過程。」

我確定我需要提供用戶名和密碼,不知道如何在我的客戶端設置它們,這是Apex代碼。

幫助表示讚賞。

+0

您是否從WSDL生成了Apex類?如果沒有,請閱讀[從WSDLS生成類:](http://www.salesforce.com/us/developer/docs/apexcode/index_Left.htm#StartTopic=Content/apex_callouts_wsdl2apex.htm)上的Salesforce文檔,並張貼更多詳細說明你的問題到底是什麼。 – Paddyslacker

+0

是的稻田我從WSDL生成了Apex存根類。但從我的控​​制器類我試圖使用@future對此存根調用,我可以進入該方法,但是當調用發生時,因爲端點不公開,我需要通過用戶名和密碼訪問它失敗。但我不知道如何設置用戶名和密碼來訪問存根上的端點以使用SAP上的web服務。希望你現在理解這個問題。如果你想要更多細節我可以提供。再次感謝您的幫助。 – jay

+0

你的意思是「端點不公開」?您嘗試訪問的Web服務(WSDL中定義的Web服務)是否可以從Web訪問? – Paddyslacker

回答

0

我導入了Enterprise WSDL並使用了loginResult中的uri。以下是我的項目中的一些代碼:

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

如果我理解正確,您正嘗試從其他salesforce模塊等打電話給Salesforces服務。在我的情況下,我嘗試使用salesforce apex代碼中的SAP服務。幫助表示讚賞。謝謝 – jay