현재 Salesforce에서 Amazon Product Retail Web Service에 전화를 걸려고합니다. 제가 Getting WSDL parse error while generating Apex code from WSDL in Salesforcesalesforce에서 apex 웹 서비스 콜 아웃에 헤더를 설정할 수 없습니다.
에서 언급했듯이
난 정점 Stub 클래스를 생성 할 수없는 초기했지만, I는 @Ballinger 제안한 방법을 따라 정점 클래스를 만들었다. 그 스텁을 사용하고 요청 매개 변수를 설정하기 위해 apex 클래스를 작성했습니다. 내가, 내가 XML 요청 메시지를받지 못했습니다 스텁 HTTP 헤더를 추가 한 경우에도
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);
}
}
을 다음과 같이 내가 쓴 클래스입니다
<?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>
헤더 때문에 다음과 같이 XML 요청입니다 SOAP 요청에 없습니다. Amazon Server에서 Signature를 요청하는 SOAP 오류가 있습니다.
보시다시피 Salesforce Apex를 처음 사용했습니다. 나는 헤더를 설정하는
의 단계를 따라 갔다.
헤더가 추가되지 않는 이유에 대한 아이디어가 있으십니까?
P.S 수동으로 헤더를 추가하고 SOAP UI에서 시도했지만 적절한 응답을 얻었습니다.
감사합니다 :)
질문을 명확히 할 수 있습니까, 제목은 HTTP 헤더에 대해 이야기하지만 질문은 SOAP 메시지 헤더에 관한 것 같습니다. – superfell
ur 답장을 보내 주셔서 감사합니다 :) AWSAccessKeyId, Timestamp, Signature 요청 메시지를 생성하는 동안 SOAP UI에서 요청 처리를 위해 세 가지 모두가 있어야합니다.이 메시지는에 지정되었으며 정상적으로 작동했습니다. 그러나 apex 클래스를 통해 추가 할 때 빈으로 표시된대로 추가되지 않습니다. . 내 머리글 설정이 정점 코드에서 잘못 되었습니까? 그게 내 질문. Apex 튜토리얼에 따라 스텁에는 inputHttpHeaders_x 맵이 있습니다. 이젠 분명해? –
Satty
질문 제목을 수정할 수 있습니까? – superfell