@ksandr_maykop

Корректная ли передача XML с помощью cURL php?

Формирую xml и передаю его параметром в функцию, которая с помощью cURL отправляет POST запрос, при этом, когда в функции, которая должна отправлять запрос вывожу переменную с моим XML получаю там строку:

string(793) " CampaignId EQUALS 191853 Date Clicks Cost AdNetworkType Date Campaign #191853, August CUSTOM_REPORT THIS_MONTH TSV NO NO "


Это нормально? Передается cUrl-ом эта строка или таки xml?

Функция формирующая xml:
function custom_report(  ) {
	$service = "reports";

	$data ='<?xml version="1.0" encoding="UTF-8"?>
    <ReportDefinition xmlns="https://api.direct.yandex.com/v5/reports">
    	<SelectionCriteria>
    		<Filter>
    			<Field>CampaignId</Field>
    			<Operator>EQUALS</Operator>
    			<Values>191853</Values>
    		</Filter>
    	</SelectionCriteria>
    	<FieldNames>Date</FieldNames>
    	<FieldNames>Clicks</FieldNames>
    	<FieldNames>Cost</FieldNames>
    	<FieldNames>AdNetworkType</FieldNames>
    	<OrderBy>
    		<Field>Date</Field>
    	</OrderBy>
    	<ReportName>Campaign #191853, August</ReportName>
    	<ReportType>CUSTOM_REPORT</ReportType>
    	<DateRangeType>THIS_MONTH</DateRangeType>
    	<Format>TSV</Format>
    	<IncludeVAT>NO</IncludeVAT>
    	<IncludeDiscount>NO</IncludeDiscount>
    </ReportDefinition>';
   
return QueryToYandex( $service, $data );
}


Отправка запроса:
function QueryToYandex( $service, $data ) {

        var_dump($data);  //здесь получаю строку

	$tokenYandex = "";

	$curl = curl_init();

	curl_setopt_array($curl, array(
		CURLOPT_URL => "https://api-sandbox.direct.yandex.com/v5/".$service,
		CURLOPT_RETURNTRANSFER => true,
		CURLOPT_POST => true,
		CURLOPT_PROTOCOLS => CURLPROTO_HTTPS,
		CURLOPT_TIMEOUT => 30,
		CURLOPT_CUSTOMREQUEST => "POST",
		CURLOPT_HTTPHEADER => array(
			"accept-language: ru",
			"authorization: Bearer ".$tokenYandex,
			"Client-Login: asdsad",
			"processingMode: online",
			"returnMoneyInMicros: false"
			),
		)
	);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
	$res = curl_exec($curl);

	if(!$res){
		$error = curl_error($curl).'('.curl_errno($curl).')';
		$res = $error;
	}
	else
		curl_close($curl);
	
	return $res;
}
  • Вопрос задан
  • 838 просмотров
Решения вопроса 1
@PavelFokeev
pavl1k.ru
Эта строка и есть ваш XML, просто, судя по всему, вы выводите его в браузер.
Попробуйте вывести в textarea, либо открыть исходный код и убедитесь.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы