Регистрация  |  Вход

Работа с ebay API

Не получается составить правильно 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();
}

Использовал статью http://habrahabr.ru/post/112770/
Получаю ответ типа такого:
<?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>

Возможно неправильная X-EBAY-API-VERSION, но я в доках так и не нашел точно.

Не получается составить правильно 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();
}

И получил нужную XML)

ДА пробывал. Как обычно 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 (ручками воспроизводишь) и все! А так ты долго будешь подбирать правильные запросы и врядли кто-то тебе тут поможет. Только опытным путем проб и ошибок.

НУ в данном случае помогло как в предыдущем посте.
Если вспомнишь название, скажи плиз.

НУ в данном случае помогло как в предыдущем посте.
Если вспомнишь название, скажи плиз.