Программисты, Help!!! Все мозги разбил на части, все извилины заплёл, пока пытался понять как получить token пользователя в Trading API на eBay. (читал тут http://developer.ebay.com/Devzone/XML/docs/HowTo/index.html ) ползал по ссылкам, и тп... в общих чертах понятно, но как до дела доходит, как колобок - "ничего не понимаю!". Вот к примеру код: Код | procedure TForm2.cxButton1Click(Sender: TObject); var request_header: TStrings; request_body, response_body: TStringStream; Http: TclHttp; xml: TNativeXml; begin cxMemo1.Clear; Application.ProcessMessages; Http := TclHttp.Create(nil); Http.SilentHTTP := True; Http.TimeOut := 5000; Http.UseTLS:= ctAutomatic; response_body := TStringStream.Create; try request_header := TStringList.Create(); try request_header.NameValueSeparator := ':'; request_header.Values['X-EBAY-API-SITEID'] := '0'; request_header.Values['X-EBAY-API-COMPATIBILITY-LEVEL'] := '967'; request_header.Values['X-EBAY-API-CALL-NAME'] := 'GetSessionID'; request_header.Values['X-EBAY-API-APP-NAME'] := AppID; request_header.Values['X-EBAY-API-DEV-NAME'] := DevID; request_header.Values['X-EBAY-API-CERT-NAME'] := SertID; request_header.Values['Content-Type'] := 'text/xml';
cxMemo1.Lines.AddStrings(request_header); Request.HeaderSource := request_header; cxMemo1.Lines.Add(StringOfChar('=', 50));
xml := TNativeXml.CreateName('GetSessionIDRequest'); xml.IndentString := #9; xml.Root.AttributeAdd('xmlns', 'urn:ebay:apis:eBLBaseComponents'); xml.Root.NodeNew('ErrorLanguage').ValueAsString := 'en_US'; xml.Root.NodeNew('WarningLevel').ValueAsString := 'High'; xml.Root.NodeNew('RuName').ValueAsString := ebay_ru_name;
xml.XmlFormat := xfReadable; cxMemo1.Lines.Add(xml.WriteToString); cxMemo1.Lines.Add(StringOfChar('=', 50)); xml.XmlFormat := xfCompact; Application.ProcessMessages; request_body := TStringStream.Create; xml.SaveToStream(request_body); Http.SendRequest('POST', 'https://api.sandbox.ebay.com/ws/api.dll', request_header, request_body, response_body); cxMemo1.Lines.Add(IntToStr(Http.StatusCode) + ' ' + Http.StatusText); cxMemo1.Lines.Add(StringOfChar('=', 50)); finally request_header.Free(); end; xml.LoadFromStream(response_body); xml.XmlFormat := xfReadable; cxMemo1.Lines.Add(DateTimeToStr(xml.Root.NodeByName('Timestamp').ValueAsDateTime)); cxMemo1.Lines.Add(trim(xml.WriteToString)); finally Http.Free; Request.Free; response_body.Free(); end; end;
|
приходит такой ответ: Код | <?xml version="1.0" encoding="UTF-8"?> <GetSessionIDResponse xmlns="urn:ebay:apis:eBLBaseComponents"> <Timestamp>2017-08-16T15:57:07.388Z</Timestamp> <Ack>Failure</Ack> <Errors> <ShortMessage>Input transfer has been terminated because your request timed out.</ShortMessage> <LongMessage>Input transfer has been terminated because your request timed out.</LongMessage> <ErrorCode>21359</ErrorCode> <SeverityCode>Error</SeverityCode> <ErrorParameters ParamID="0"> <Value>Please try again.</Value> </ErrorParameters> <ErrorClassification>SystemError</ErrorClassification> </Errors> <Version>989</Version> <Build>E989_CORE_API_18131074_R1</Build> </GetSessionIDResponse>
|
при этом делаю тоже самое на их пробнике (тут https://developer.ebay.com/DevZone/build-te...;variation=xml) и всё отрабатывает великолепно: Код | <?xml version="1.0" encoding="UTF-8"?> <GetSessionIDResponse xmlns="urn:ebay:apis:eBLBaseComponents"> <Timestamp>2017-08-16T16:03:08.823Z</Timestamp> <Ack>Success</Ack> <Version>989</Version> <Build>E989_CORE_API_18131074_R1</Build> <SessionID>fkcEAA**ebc8c17815d0a471d2306330ffffebc3</SessionID> </GetSessionIDResponse>
|
Помогите!!! Это сообщение отредактировал(а) zve4202 - 17.8.2017, 12:21
|