oauth-php, wysyłanie treści metodą POST

0

Witam,
mam problem dotyczący wysyłania treści do API za pomocą metody POST w bibliotece do OAuth: https://code.google.com/p/oauth-php/wiki/ConsumerHowTo

Muszę wysłać string JSON.

Mój aktualny kod do wysyłania tej treści:

$json_string = json_encode($string);
$params = array(
	'method' => 'ping'
);
		
$createRequestUrl = 'https://www.infakt.pl/api/v2/invoices/create.json';
$method = 'POST';
$createRequest = new OAuthRequester($createRequestUrl, $method,$params,$json_string);
$createResult = $createRequest->doRequest($user_id);

Nie jestem w stanie dociec do tego, jak dokładnie działa ta biblioteka, ponieważ dokumentacja jest dosyć uboga, praktycznie jest w niej bardzo mało. Nie wiem dokładnie gdzie umieścić zmienną:

$json_string

Jeśli macie nawet inne pomysły na OAutha (oprócz biblioteki która jest opisana na strone php.net) to chętnie zobaczę.

0

przydałaby się raczej dokumentacja tego infaktu, bo nie wiem czy ten json ma byc po prostu jako zawartość POST, czy ma być jedną ze zmiennych w POST

0

http://www.infakt.pl/infakt_api/ogolne_informacje

To jest dokumentacja tego inFaktu

0

Aby bezproblemowo korzystać z API należy ustawić nagłówki Accept oraz Content-type:

0

To tego też dotarłem, natomiast moje pytanie brzmi, jak to ustawić za pomocą tej biblioteki

0

Nie chce mi się analizować całej biblioteki, widzę, że jest tam coś o nagłówkach, nagłówki przy wysyłaniu żądania zbiera funkcja getAuthorizationHeader

sprawdź też 319 linię pliku OAuthRequester.php

gdzieś to tam musi być ;)

0

Dobra, to doszedłem do tego, że nagłówek dodaje się tutaj:

protected function curl_raw ( $opts = array() )
	{	
		if (isset($opts[CURLOPT_HTTPHEADER]))
		{
			$header = $opts[CURLOPT_HTTPHEADER];
		}
		else
		{
			$header = array();
		}
		
		$ch 		= curl_init();
		$method		= $this->getMethod();
		$url		= $this->getRequestUrl();
		$header[]	= $this->getAuthorizationHeader();
		$query		= $this->getQueryString();
		$body		= $this->getBody();

Mój nagłówek wygląda tak:

$headers = array(
			CURLOPT_HTTPHEADER => array(
				'Accept: application/json',
				'Content-type: application/json'
			)
		);

Natomiast wprowadzam go w ten sposób:

$createResult = $createRequest->doRequest($user_id,$headers);

Bo funkcja "doRequest" wygląda tak:

function doRequest ( $usr_id = 0, $curl_options = array(), $options = array() )

Problem teraz jest taki, że jak zrobie var_dump, czy tam print_r na tym arrayu to pokazuje mi, że wygląda on w ten sposób:

array(0) { } array(0) { } array(1) { [10023]=> array(2) { [0]=> string(24) "Accept: application/json" [1]=> string(30) "Content-type: application/json" } }

gdzie pojęcia nie mam dlaczego się tak dzieje. :)

//EDIT

Zanim $curl_options zostają przekazane do curl_raw() to wykonuje się funkcja:

protected function prepareCurlOptions ( $curl_options, $extra_headers )
	{
		$hs = array();
		if (!empty($curl_options[CURLOPT_HTTPHEADER]) && is_array($curl_options[CURLOPT_HTTPHEADER]))
		{
			foreach ($curl_options[CURLOPT_HTTPHEADER] as $h)
			{
				list($opt, $val) = explode(':', $h, 2);
				$opt      = str_replace(' ', '-', ucwords(str_replace('-', ' ', $opt)));
				$hs[$opt] = $val;
			}
		}

		$curl_options[CURLOPT_HTTPHEADER] = array();
		$hs = array_merge($hs, $extra_headers);		
		foreach ($hs as $h => $v)
		{
			$curl_options[CURLOPT_HTTPHEADER][] = "$h: $v";
		}
		return $curl_options;
	}

Jeśli ktoś byłby w stanie mi to wszystko wytłumaczyć byłbym bardzo wdzięczny, ponieważ tego bardzo pilnie potrzebuję na dziś :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1