CURL naar PHP omzetten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

GeertJan A

GeertJan A

16/02/2016 19:06:10
Quote Anchor link
Hallo,

Dit is dan mijn eerste post op dit forum en ik val direct binnen met een vraag. Hopelijk is er iemand die me bij het volgende probleem kan helpen. Mijn kennis vwb Curl is zeer beperkt en ik zit al lang vast op dit onderwerp.

Als ik het volgende CURL script in de terminal uitvoer loopt dit als een trein:

curl -XPOST https://api.wonderpush.com/v1/management/deliveries \
-d accessToken=ABCDEFGHIJK \
-d applicationId=0123456789 \
-d segmentIds=@ALL \
-d notificationOverride='{"type":"simple","text":"Testmessage","data":{"type":"simple"}}'

Nu is het idee dat dit script automatisch op de server wordt uitgevoerd zodra dit nodig is, ik zal dus iets in PHP moeten schrijven dat deze output geeft.

Nu ben ik momenteel bij het volgende stukje code:

$APPLICATION_ID = "0123456789";
$ACCESS_TOKEN = "ABCDEFGHIJK";
$url = 'https://api.wonderpush.com/v1/management/deliveries';
$ch = curl_init();
$headers = array(
'Content-Type: application/json',
'Content-Length: ' . strlen($_data),
);
$data = array(
'accessToken' => $ACCESS_TOKEN
);

$_data = json_encode($data);

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$output = curl_exec($ch);

curl_close($ch);
echo $output;

Om te testen heb ik CURL afgekort tot de eerste 2 regels, als ik dit in de terminal uitvoer krijg ik de response dat de body mist maar de access_Token komt wel door. Echter als ik het uitvoer met het PHP script mist hij de access_Token.
Schijnbaar stuurt mijn stukje PHP de access_Token niet door of op de verkeerde manier.

Kan iemand mij vertellen wat er mis gaat? Het gebrek aan feedback (wat staat er in de POST data?) helpt niet met het debuggen. Als iemand weet hoe ik dat kan zien ben ik ook een stapje verder.

Alvast bedankt!

Geert-Jan
 
PHP hulp

PHP hulp

01/11/2024 00:09:27
 
Michael -

Michael -

16/02/2016 23:23:34
Quote Anchor link
Wat ik uit de documentatie begrijp (https://www.wonderpush.com/docs/reference/api/v1#!/get__v1_deliveries)
kun je 'deliveries' alleen ophalen met een GET en niet met een POST.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$url
= 'https://api.wonderpush.com/v1/management/deliveries/?accessToken=' . $ACCESS_TOKEN;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$output = curl_exec($ch);
curl_close($ch);

echo $output;
?>

Zou dus voldoende moeten zijn.
 
GeertJan A

GeertJan A

17/02/2016 09:41:28
Quote Anchor link
Bedankt voor het antwoord.

Volgens mij is de documentatie op https://www.wonderpush.com/docs/reference/management-api/v1#!/post__v1_management_deliveries_ van toepassing. Dit gaat over het posten van push berichten.

Example
POST https://api.wonderpush.com/v1/management/deliveries/?accessToken=foobar

Zou volgens mij dan moeten werken met POST maar geen idee hoe.
 
E vH

E vH

17/02/2016 11:47:21
Quote Anchor link
Zover ik uit de documentatie haal kom ik ook uit op de GET.

Nu zeg je zelf dat dat het in de terminal wel werkt..:
"curl -XPOST"

Je haalt het op met een GET maar gebruikt vervolgens -XPOST

It should be noted that curl selects which methods to use on its own depending on what action to ask for. -d will do POST, -I will do HEAD and so on. If you use the --request / -X option you can change the method keyword curl selects, but you will not modify curl's behavior. This means that if you for example use -d "data" to do a POST, you can modify the method to a PROPFIND with -X and curl will still think it sends a POST. You can change the normal GET to a POST method by simply adding -X POST in a command line like:

curl -X POST http://example.org/

... but curl will still think and act as if it sent a GET so it won't send any request body etc.

Bron: https://curl.haxx.se/docs/httpscripting.html
Gewijzigd op 17/02/2016 11:47:39 door E vH
 
Thomas van den Heuvel

Thomas van den Heuvel

17/02/2016 14:33:32
Quote Anchor link
Plus je communiceert met een API via https. Moet je cURL daartoe niet speciaal instrueren?

EDIT: of wellicht detecteert cURL dit automatisch, maar wordt er niet voldaan aan een randvoorwaarde om te kunnen communiceren via https?

Heb je al geprobeerd om het melden + weergeven van fouten aan te zetten en heb je je errorlogs geraadpleegd? Heeft cURL zelf een (verbose) debug modus?
Gewijzigd op 17/02/2016 14:36:50 door Thomas van den Heuvel
 
GeertJan A

GeertJan A

18/02/2016 09:41:51
Quote Anchor link
GET vs POST, bedankt voor deze info. Dit wist ik dus niet, verklaart wel een hoop.

HTTPS heb ik aangezet maar maakte geen verschil, met de info die ik kan ik weer even vooruit, er gaat een hele nieuwe wereld open... Verbose met errorlog is ook Work in progress, hier ben ik al even mee bezig geweest maar kreeg geen positief resultaat.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.