Неисправность при отправке XML HTTP POST-запроса к eBay API с использованием PHP - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь отправить HTTP-запрос XML POST к API покупок eBay, используя GetSingleItemRequest. Я настроил запрос согласно документации, которую вы можете увидеть ниже. Проблема в том, что я получаю ошибку, которую я пытаюсь решить. Я не вижу, в чем проблема! Заранее благодарим за помощь.

ошибка: «Ошибка» Входные данные недействительны. Входные данные для данного тега недействительны или отсутствуют. Пожалуйста, проверьте документацию API. 1.22 Ошибка XML структуры документов должны начинаться и заканчиваться внутри той же сущности. RequestError E1141_CORE_APILW_19170841_R1 1141 "

мой код (я удалил свой идентификатор приложения eBay для безопасности):

error_reporting(E_ALL);

    $endpoint = 'https://open.api.ebay.com/shopping';

    // Create headers to send with CURL request.
    $headers = array 
    (
        'X-EBAY-API-APP-ID:XXXXXXXXXXXXXXXXXX',
        'X-EBAY-API-SITE-ID:3',
        'X-EBAY-API-CALL-NAME:GetSingleItem',
        'X-EBAY-API-VERSION:1141',          
        'X-EBAY-API-REQUEST-ENCODING:xml',
    );

    // Generate XML request
    $xml_request = '<?xml version="1.0" encoding="utf-8"?>';
    $xml_request .= '<GetSingleItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">';
    $xml_request .= '<IncludeSelector>Details</IncludeSelector>';
    $xml_request .= '<ItemID>113989656655</ItemID>';
    $xml_request .= '</GetSingleItemRequest>';

    $session  = curl_init($endpoint);                       // create a curl session
    curl_setopt($session, CURLOPT_HTTPHEADER, $headers);    //Add headers
    curl_setopt($session, CURLOPT_POST, true);  //Set to POST request type
    curl_setopt($session, CURLOPT_POSTFIELDS, $xml_request);    //Attach XML to request
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true);    //Return result as string

    $result = curl_exec($session);  //Execute POST request

    if(curl_errno($session)){
        throw new Exception(curl_error($session));
    }


    curl_close($session);   //Close the cURL handle.

    echo $result;   //Print out the response output.
...