我目前正在嘗試在Salesforce中調用亞馬遜產品零售Web服務。無法在salesforce中的apex Web服務標註中設置標頭
正如我在 Getting WSDL parse error while generating Apex code from WSDL in Salesforce
提到我最初無法生成頂點短線類別,但我隨後@Ballinger建議的方法和創建頂點類。我寫了一個apex類來使用該存根並設置請求參數。我寫的類是如下
public class AmazonProductStubNew
{
public static void getResults()
{
System.Debug(' getResults start ');
AmazonWS.AWSECommerceServicePortUS stub = new AmazonWS.AWSECommerceServicePortUS();
stub.inputHttpHeaders_x = new Map<String,String>();
stub.inputHttpHeaders_x.put('AWSAccessKeyId','MyAmazonAWSAccessKeyId');
stub.inputHttpHeaders_x.put('Timestamp','2012-11-28T12:11:30Z');
stub.inputHttpHeaders_x.put('Signature','Encrypted Secret Code');
String MarketplaceDomain = '';
String AWSAccessKeyId = 'MyAmazonAWSAccessKeyId';
String AssociateTag = '';
String XMLEscaping = '';
String Validate = '';
AmazonWS.ItemSearchRequest Shared = new AmazonWS.ItemSearchRequest();
Shared.SearchIndex = 'DVD';
AmazonWS.ItemSearchRequest[] Request = new AmazonWS.ItemSearchRequest[1];
Request[0] = new AmazonWS.ItemSearchRequest();
Request[0].Title = 'Inception';
AmazonWS.ItemSearchResponse_element response = stub.ItemSearch(MarketplaceDomain,AWSAccessKeyId,AssociateTag,XMLEscaping,Validate,Shared,Request);
AmazonWS.Items_element[] localItems = response.Items;
System.Debug(localItems[0].TotalResults);
}
}
即使我已經添加了HTTP頭存根,我沒有得到它在XML請求消息 XML請求如下
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<env:Header />
<env:Body>
<ItemSearch xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01">
<MarketplaceDomain>
</MarketplaceDomain>
<AWSAccessKeyId>MyAWSAccessKeyId</AWSAccessKeyId>
<AssociateTag></AssociateTag>
<XMLEscaping></XMLEscaping>
<Validate></Validate>
<Shared><SearchIndex>DVD</SearchIndex></Shared>
<Request><Title>Inception</Title>
</Request></ItemSearch>
</env:Body></env:Envelope>
由於頭在SOAP請求中不存在,存在SOAP故障從Amazon服務器請求籤名。
正如您所見,我是Salesforce Apex的新手。我跟着步驟
設置頭。
任何想法爲什麼頭沒有被添加?
P.S我手動添加了頭文件並在SOAP UI中嘗試過,我得到了正確的響應。
謝謝:)
你能否澄清你的問題,標題是關於HTTP標題的討論,但你的問題似乎是關於SOAP消息標題,這是什麼? – superfell
感謝您的回覆:) AWSAccessKeyId,時間戳,簽名所有三個應該出現的請求處理,在構建請求消息的SOAP UI中,我指定這些在,它工作正常。但是,當我通過頂點類添加它不會被添加,如空的所示。我在頂點代碼中的標題設置是否有誤?這是我的問題。按照Apex教程,存根有inputHttpHeaders_x地圖。現在這清楚了嗎? –
Satty
然後你可以修復你的問題的標題。 – superfell