Не получается составить правильно POST запрос для получение инфы по товару( юзаю shoppingAPI ) через GetSingleItem.
Пример(диалект java):
public String Send()
{
req.setEndpoint('http://open.api.sandbox.ebay.com/shopping');
req.setMethod('POST');
req.setHeader('X-EBAY-API-CALL-NAME', 'GetSingleItem');
req.setHeader('X-EBAY-API-APP-ID', 'XXXXXXXXXXXXXXXXX');
req.setHeader('X-EBAY-API-REQUEST-ENCODING', 'XML');
req.setHeader('X-EBAY-API-VERSION', '517');
req.setBody('<?xml version="1.0" encoding="utf-8"?> <GetSingleItemRequest xmlns="urn:ebay:apis:eBLBaseComponents"> <ItemID>' + idItem + '</ItemID> <IncludeSelector>TextDescription</IncludeSelector> </GetSingleItemRequest>');
Http http = new Http();
HTTPResponse res = http.send(req);
return res.getBody();
}
<?xml version="1.0" encoding="UTF-8"?> <GetSingleItemResponse xmlns=""> <ns1:Ack xmlns:ns1="urn:ebay:apis:eBLBaseComponents">Failure</ns1:Ack> <ns2:Errors xmlns:ns2="urn:ebay:apis:eBLBaseComponents"> <ns2:ShortMessage>Input data is invalid.</ns2:ShortMessage> <ns2:LongMessage>Input data for the given tag is invalid or missing. Please check API documentation.</ns2:LongMessage> <ns2:ErrorCode>1.22</ns2:ErrorCode> <ns2:SeverityCode>Error</ns2:SeverityCode> <ns2:ErrorParameters ParamID="0"> <ns2:Value>XML document structures must start and end within the same entity.</ns2:Value> </ns2:ErrorParameters> <ns2:ErrorClassification>RequestError</ns2:ErrorClassification> </ns2:Errors> <ns3:Build xmlns:ns3="urn:ebay:apis:eBLBaseComponents">E867_CORE_APILW_16754877_R1</ns3:Build> <ns4:Version xmlns:ns4="urn:ebay:apis:eBLBaseComponents">867</ns4:Version> </GetSingleItemResponse>
Не получается составить правильно POST запрос для получение инфы по товару( юзаю shoppingAPI ) через GetSingleItem. Пример(диалект java): [code] public String Send() { req.setEndpoint('http://open.api.sandbox.ebay.com/shopping'); req.setMethod('POST'); req.setHeader('X-EBAY-API-CALL-NAME', 'GetSingleItem'); req.setHeader('X-EBAY-API-APP-ID', 'XXXXXXXXXXXXXXXXX'); req.setHeader('X-EBAY-API-REQUEST-ENCODING', 'XML'); req.setHeader('X-EBAY-API-VERSION', '517'); req.setBody('<?xml version="1.0" encoding="utf-8"?> <GetSingleItemRequest xmlns="urn:ebay:apis:eBLBaseComponents"> <ItemID>' + idItem + '</ItemID> <IncludeSelector>TextDescription</IncludeSelector> </GetSingleItemRequest>'); Http http = new Http(); HTTPResponse res = http.send(req); return res.getBody(); } [/code] Использовал статью [URL="http://habrahabr.ru/post/112770/"]http://habrahabr.ru/post/112770/[/URL] Получаю ответ типа такого: [code]<?xml version="1.0" encoding="UTF-8"?> <GetSingleItemResponse xmlns=""> <ns1:Ack xmlns:ns1="urn:ebay:apis:eBLBaseComponents">Failure</ns1:Ack> <ns2:Errors xmlns:ns2="urn:ebay:apis:eBLBaseComponents"> <ns2:ShortMessage>Input data is invalid.</ns2:ShortMessage> <ns2:LongMessage>Input data for the given tag is invalid or missing. Please check API documentation.</ns2:LongMessage> <ns2:ErrorCode>1.22</ns2:ErrorCode> <ns2:SeverityCode>Error</ns2:SeverityCode> <ns2:ErrorParameters ParamID="0"> <ns2:Value>XML document structures must start and end within the same entity.</ns2:Value> </ns2:ErrorParameters> <ns2:ErrorClassification>RequestError</ns2:ErrorClassification> </ns2:Errors> <ns3:Build xmlns:ns3="urn:ebay:apis:eBLBaseComponents">E867_CORE_APILW_16754877_R1</ns3:Build> <ns4:Version xmlns:ns4="urn:ebay:apis:eBLBaseComponents">867</ns4:Version> </GetSingleItemResponse> [/code] Возможно неправильная X-EBAY-API-VERSION, но я в доках так и не нашел точно.
Плиз хелп!!!
Плиз хелп!!!
Пробовал созлать прокси класс из WSDL ?
[quote="Виктор Сенько"]Плиз хелп!!![/quote] Пробовал созлать прокси класс из [url=http://developer.ebay.com/webservices/latest/shoppingservice.wsdl]WSDL[/url] ?
ДА пробывал. Как обычно SF послал на три буквы при генерации.
Но нашел другой выход:
public String Send()
{
req.setEndpoint('http://open.api.ebay.com/shopping?callname=GetSingleItem&responseencoding=XML&appid=XXXXXXXXXXXXXXXXXXXXXXXXXX&siteid=0&version=525&ItemID='+ idItem +'&IncludeSelector=ItemSpecifics');
req.setMethod('GET');
Http http = new Http();
HTTPResponse res = http.send(req);
Dom.Document doc = res.getBodyDocument();
return doc.toXmlString();
}
ДА пробывал. Как обычно SF послал на три буквы при генерации. Но нашел другой выход: [code] public String Send() { req.setEndpoint('http://open.api.ebay.com/shopping?callname=GetSingleItem&responseencoding=XML&appid=XXXXXXXXXXXXXXXXXXXXXXXXXX&siteid=0&version=525&ItemID='+ idItem +'&IncludeSelector=ItemSpecifics'); req.setMethod('GET'); Http http = new Http(); HTTPResponse res = http.send(req); Dom.Document doc = res.getBodyDocument(); return doc.toXmlString(); }[/code] И получил нужную XML)
Это сложная тема.
Млин, где-то уже я обсуждал эту тему, как бороться с вебсервисами, WSDL которых не парсится.
Тебе надо найти прогу, которая переварит WSDL и позволит сгенерировать запрос, получить ответ и посмотреть это все в красивом виде (млин, не могу вспомнить как называется эта прога). После того как запросы и ответы нужные получится воспроизвести, просто переносишь их salesforce (ручками воспроизводишь) и все! А так ты долго будешь подбирать правильные запросы и врядли кто-то тебе тут поможет. Только опытным путем проб и ошибок.
Это сложная тема. Млин, где-то уже я обсуждал эту тему, как бороться с вебсервисами, WSDL которых не парсится. Тебе надо найти прогу, которая переварит WSDL и позволит сгенерировать запрос, получить ответ и посмотреть это все в красивом виде (млин, не могу вспомнить как называется эта прога). После того как запросы и ответы нужные получится воспроизвести, просто переносишь их salesforce (ручками воспроизводишь) и все! А так ты долго будешь подбирать правильные запросы и врядли кто-то тебе тут поможет. Только опытным путем проб и ошибок.
НУ в данном случае помогло как в предыдущем посте.
Если вспомнишь название, скажи плиз.
НУ в данном случае помогло как в предыдущем посте. Если вспомнишь название, скажи плиз.