Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > eBay, Trading API, получить Token


Автор: zve4202 16.8.2017, 19:16
Программисты, Help!!!
Все мозги разбил на части, все извилины заплёл, пока пытался понять как получить token пользователя в Trading API на eBay.  
(читал тут  http://developer.ebay.com/Devzone/XML/docs/HowTo/index.html ) ползал по ссылкам, и тп...
в общих чертах понятно, но как до дела доходит, как  smile колобок - "ничего не понимаю!".
Вот к примеру код:
Код

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-test/test-tool/default.aspx?index=0&api=trading&call=GetSessionID&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>


smile  Помогите!!!  

Автор: zve4202 18.8.2017, 10:27
Вопрос решён))) Проблема была в компонентах

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)