Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Rekomendowane odpowiedzi

Opublikowano

Witam,

Tworzę prosty widżet na WordPress'ie, który będzie wyświetlał kilka pierwszych tematów z forum (IPS 4.4.1). W tym celu usiłuję napisać prostą aplikację po stronie IPS, która będzie zwracać te tematy (tytuł + odnośnik). A więc utworzyłem aplikację w ACP, wygenerowałem klucz API dla tej aplikacji, w folderze API mojej aplikacji utworzyłem odpowiedni plik (zawartość skopiowałem z core/api/hello.php i odpowiednio zmodyfikowałem ). Próbuję po stronie WP wysłać żądanie curlem do IPS'a ale cały czas dostaje error BAD METHOD. Pytanie dlaczego? To samo jest gdy wklepie w przeglądarce http://postsspot.pl/forum/api/index.php?/ppfwdgt/topics&key=api_key. Oczywiście klucz wpisuję prawidłowy.

Podsyłam kod PHP funkcji po stronie WP:
  

<?php function pp_get_forum_topics(){
    $apiKey = 'jakisapikey';

    $url = 'http://postsspot.pl/forum/api/index.php?/ppfwdgt/topics';

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, "http://postsspot.pl/forum/api/index.php?/ppfwdgt/topics");
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE );
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC );
    curl_setopt($curl, CURLOPT_USERPWD, "{$apiKey}:" );

    $response = curl_exec( $curl );

    if (curl_error($curl)) {
        $error_msg = curl_error($curl);
    }
    
    if (isset($error_msg)) {
        print_r( $error_msg );
    }else{
        return $response;
    }

	curl_close($curl); 
	
}
?>

Kod PHP skryptu topics.php w folderze applications/ppfwdgt/api (kod jeszcze nie zwraca tematów):
 

<?php
/**
 * @brief		Hello API
 * @author		<a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
 * @copyright	(c) Invision Power Services, Inc.
 * @license		https://www.invisioncommunity.com/legal/standards/
 * @package		Invision Community
 * @since		3 Dec 2015
 */

namespace IPS\ppfwdgt\api;

/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
	header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
	exit;
}

/**
 * @brief	Hello API
 */
class _topics extends \IPS\Api\Controller
{
	/**
	 * GET /ppfwdgt/topics
	 * Get three latest topics.
	 *
	 * @return	array
	 * @apiresponse	string	communityName	The name of the community
	 * @apiresponse	string	communityUrl	The community URL
	 * @apiresponse	string	ipsVersion		The Invision Community version number
	 */
	public function GETtopics()
	{

        return new \IPS\Api\Response( 200, array(
			'message'	=> "works"
		) ); 
	}
}

Czy coś pominąłem? Coś zrobiłem źle? Proszę o pomoc

 

Opublikowano
 
Cytat

Dlaczego nie skorzystasz z gotowego endpointa pod to: https://invisioncommunity.com/developers/rest-api?endpoint=forums/topics/GETindex


Jakoś mi to prędzej nie przyszło do głowy.. Użyłem ten endpoint przed chwilą  z nowo wygenerowanym kluczem i jest już zwracana normalna odpowiedź.. Także @DawPi dzięki za pomoc, wykorzystam ten endpoint... 

I jeżeli to nie wymaga większej rozkminy @DawPi mógłbyś powiedzieć co było nie tak z moim endpointem? Powinienem go przed użyciem zarejestrować jakoś czy coś? Generalnie nie dodawałem żadnego kodu PHP nigdzie oprócz tego skryptu topics.php w folderze api swojej aplikacji..  

A tutaj jeszcze wkleję co piszą o tym błędzie:
Code: 3S291/2  
Message: BAD_METHOD    
Description: The endpoint the request was sent to does not exist - the HTTP request method may be incorrect (for example, sending a GET rather than a POST).
Opublikowano
2 minuty temu, DawPi napisał:

To widziałem. :)

Teraz jestem na telefonie. Jak bardzo chcesz to jutro pomyślę. 


A to mniejsza z tym wtedy.. dzięki jeszcze raz za pomoc :)

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.