OOP curl class

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Advanced Mendix Developer Order Management Systeme

Advanced Mendix Developer Order Management Systemen (NL) Den Haag HBO/WO IT Professional "Als Advanced Mendix Developer impact maken op de groeiende e-commerce markt? Je doet dit bij PostNL door met je DevOps team onze Mendix applicaties verder te ontwikkelen, waarbij je complexe logistieke business processen vertaalt naar applicaties die ons primaire proces ondersteunen". Wat ga je doen? PostNL wordt een postal tech company We nemen de ontwikkeling van onze IT applicaties in eigen hand door onze eigen software-ontwikkel-capability op te zetten. Als Advanced Mendix Developer ben je onderdeel van een multidisciplinair, agile werkend Business-IT-team. Samen met dit team bouw je onze logistieke IT-applicaties verder

Bekijk vacature »

Backend Developer @ Amsterdam

2021-11-19 iSense Backend Developer Ben jij een Backend Developer die graag aan de slag wil bij een van de grootste en meest gerenommeerde financiële organisaties wereldwijd? Wil jij je richten op projecten waar je van scratch af aan (inhouse) de meest innovatieve oplossingen gaat bedenken én uitvoeren voor erkende organisaties (met o.a. Python en Django)? Lees dan nu verder! ISHU51586 Organisatie Als jij een Backend Developer bent is dit jouw kans om aan de slag te gaan bij een van de grootste en meest gerenommeerde financiële organisaties wereldwijd. Met diverse vestigingen zijn ze een belangrijke speler in de financiële markt.

Bekijk vacature »

Python Developer - Capelle a/d IJssel

De vacature In jouw functie werk in projecten aan enterprise-applicaties. Met een team bouw je oplossingen op basis van Python. Dat is de kern van je werk. Maar bij ons ben je consultant en dat betekent meer dan alleen programmeren. Wij vinden het belangrijk dat je naast de techniek zelf ook oog hebt voor de context waarbinnen deze wordt gebruikt en dat je hierover kunt adviseren. Dat is onze en jouw toegevoegde waarde. Je bent op een punt in je loopbaan waar je toe bent aan een nieuwe fase. Met jouw ervaring ben je in staat om startende collega’s wegwijs

Bekijk vacature »

Startersfunctie .NET Developer @ Regio Utrecht

2021-10-22 iSense Startersfunctie .NET Developer Heb je onlangs een hbo-, wo-opleiding of een minor richting de IT afgerond OF heb jij middels cursussen je sporen verdiend in het programmeren en wil je graag aan de slag als Fullstack .NET Developer? Lees dan snel verder! Want in januari/februari 2022 start de Experis Academy weer met een leerprogramma waarin IT-experts je opleiden tot developer met als specialisatie .NET. Dit allemaal met een salaris en een vooruitzicht op een baan bij een topwerkgever. ISLE51102 Regio Utrecht en omstreken Wat houdt de startersfunctie .NET Developer in? Vanaf januari/februari 2022 krijg jij via de Experis

Bekijk vacature »

Java Developer

De vacature In deze diverse functie als Java Developer ben je verantwoordelijk voor de innovatie, realisatie en het beheer van de complexe informatiesystemen voor een van onze leuke klanten. Als Java Developer achterhaal je proactief de behoeften en wensen van de gebruikers binnen de organisatie. Deze vertaal je naar functionele en technische ontwerpen, afhankelijk van de omvang van het project. Vervolgens realiseer, programmeer en test je je oplossingen, om daarna samen met je klant te bespreken of het gewenste resultaat bereikt is. Functie eisen We zijn op zoek naar een Java Developer die: Een relevant diploma heeft op minimaal HBO

Bekijk vacature »

Frontend Developer

De vacature Als front-end developer bij Synerg-e is je primaire taak het onderhouden en uitbreiden van de bestaande webapplicaties en ontwerpen, het implementeren van technische interfaces, het aandragen van initiatieven en opzetten van en meewerken in multimedia projecten. We zoeken een enthousiaste vakman of -vrouw. Je bent gedreven, voelt je betrokken en je hebt een gezonde interesse in vooruitstrevende internettechnieken. Je bent geïnteresseerd in het front-end vak en dus verknocht aan JavaScript, HTML, CSS, en moderne front-end frameworks. Je bent een programmeur en houdt van het elegant oplossen van problemen. Functie eisen Beheersing van front-end-technieken als jQuery, Javascript, XML, JSON,

Bekijk vacature »

Umbraco Developer @ Regio Den Haag

2021-10-06 iSense Umbraco Developer Ben jij een ervaren Full stack developer met ruime ervaring binnen een CMS systeem? En heb je ervaring met full stack development binnen een Microsoft omgeving? Lees dan snel verder! ISBA49656 Nieuw Organisatie Voor een semi-overheidsorganisatie in de regio Den Haag zijn we opzoek naar een ervaren Developer, die kennis heeft of wilt ontwikkeling op Umbraco vlak. Je zal verantwoordelijk worden voor het ontwikkelen van het huidige platforms en nieuwe web-omgevingen. Als developer binnen dit team ga je zorg dragen voor het ontwikkelen door middel van onder meer C# en Azure. Ook ontwikkel je koppelingen met

Bekijk vacature »

Full Stack .NET Developer @ Amsterdam

2021-12-01 iSense Full Stack .NET Developer Are you an Full Stack .NET developer who likes to work in the Amsterdam region and develop new features from scratch? Do you want to play a connecting role between business and IT? Would you like to work for a large Northern European financial organization with multiple home markets? Then keep on reading! ISJE51892 Organization As a Full Stack .NET Developer in a team of 7 professionals, you are responsible for developing applications for the largest in-house product: an application for everything related to mortgages. The programming language you master is C#. Do you

Bekijk vacature »

Web Developer

De vacature Door de groei van de organisatie en het aantal projecten is 3110 met spoed op zoek naar een rasechte Web Developer met een diepgaande passie voor programmeren. Samen met onze Technical Director Jasper, zal jij de meest innovatieve projecten ontwikkelen en lanceren. 3110 biedt: Comfortabele open werkruimte in het centrum van Rotterdam Korte lijnen met het team Marktconform salaris Gezellige werksfeer, pizzasessies en regelmatige borrels Functie eisen Jij: Bent een web developer die zich continue ontwikkelt Houdt niet van losse eindjes Verdiept je graag in lastige materies, op zoek naar de speld in een hooiberg Bent creatief in

Bekijk vacature »

Lead Java Developer

De vacature Binnen deze rol kun je al jouw creativiteit en eerdere ervaringen kwijt die jij in Java-land hebt opgedaan. Wij zijn namelijk op zoek naar een ervaren kracht die mee wilt denken hoe wij als Immune-IT deze tak van de organisatie kunnen optuigen. Los van het brainstormen met het management verlies je niet de touch met de techniek aangezien je nog steeds leuke opdrachten kan doen bij de klanten die je zelf selecteert! Ben jij iemand die het leuk vindt om te sparren over een organisaties en jouw visie tot werkelijkheid te brengen? Dan is dit de rol voor

Bekijk vacature »

Full-Stack Nodejs Developer

De vacature We’re looking for n Senior JavaScript (ReactJS) front-/backend developer to turn visual designs into beautiful and well performing applications. You'll work in a small team of passionated developers and will be co-responsible for good performing and well- documented code. Knowledge about making applications compatible with all common browsers for different devices and resolutions. You're fluent in understanding and writing HTML, CSS and JavaScript in the best performing way. Functie eisen Higher Professional Education or above working and thinking level A big passion for web development 2+ years of experience in shipping high-quality software Strong JavaScript, HTML5 and CSS3

Bekijk vacature »

Backend Developer Security

De vacature Je start je eerste dag met een standup. Dit gebeurt 2 keer per week organisatie-breed; de andere dagen met betrokken afdelingen. Hierin licht iedereen kort zijn dag toe. Werpt iemand een balletje op voor een kans of deelt een succes. Jij deelt vandaag dat je start bij Maqqie en zin hebt om de systemen te leren kennen. Eenmaal op je werkplek pak jij je nieuwe laptop uit. Kees geeft je een digitale rondleiding van de programma's waar we gebruik van maken. Aansluitend hierop alvast een kijk op de week, en wat er in grote lijnen in deze sprint

Bekijk vacature »

Python Developer

De vacature Je hebt minimaal 3 jaar ervaring met Python, en bij voorkeur ook met Django Je hebt overzicht over de hele stack (Nginx, Gunicorn, Redis, Celery, Docker, etc.) Je bent leergierig en maakt je dingen snel eigen Je bent open source-minded Je hebt (basis)kennis van integraties o.b.v. REST API's, OAuth en/of SAML Kennis van de zorg en zorgstandaarden (zoals HL7 FHIR en Koppeltaal) is een pré Functie eisen We zijn op zoek naar een Python/Django developer die ons Scrum team komt versterken. Je wordt enthousiast van leesbare en goed geteste code, heldere datamodellen, mooie REST en GraphQL API's, pijnloze

Bekijk vacature »

Frontend Developer

De vacature Als Front-end developer ben je verantwoordelijk voor het ontwikkelen van state-of-the-art software. Jij werkt samen met developers, designers en testers in multidisciplinaire Agile Scrum teams aan innovatieve nieuwe producten. Intersoftware B.V.en UniTrust B.V. zijn vanaf medio 2019 onderdeel van één groep. Je draagt bij aan integratie van producten van deze bedrijven. Je start als Front-end developer met enkele jaren (werk)ervaring met React en/of Angular en groeit door. Heb je ruime ervaring, dan spreken we je graag als Senior developer. In alle gevallen ben je technisch zeer vaardig en heb je kennis van meerdere moderne ontwikkeltools. Je houdt je

Bekijk vacature »

iOS Developer

As an iOS Developer, you make sure our mobile apps give our users the best possible experience, whether they are browsing and buying our products online or managing our internal operations. How do I become a iOS Developer at Coolblue? Your specialty is iOS so you are successful in writing Swift code in an agile fashion and do some pair programming with your colleagues to guarantee higher quality. Besides that you think about technical decisions like architecture, tools and processes. You also keep an eye on the performance of the app and you analyse with your team how to improve

Bekijk vacature »
Jorn Reed

Jorn Reed

19/10/2021 12:00:09
Quote Anchor link
Hoi iedereen,
Ik ben laatst begonnen met voor het eerst curl te gebruiken in PHP.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
$headers = [
                "Content-Type: application/json",
                "Accept: application/json",
                "X-API-TOKEN: ".$token,
                "Connection: keep-alive",
            ];
            
            $body = [
                'FirstName'             => $result['inputs']['fname'],
                'MiddleName'            => $result['inputs']['prefix'],
                'LastName'                 => $result['inputs']['lname'],
                'Email'                    => $result['inputs']['email'],
                'PhonePrivate'            => $result['inputs']['phone'],
                'Gender'                => $result['inputs']['sex'],
                'Zipcode'                => $result['inputs']['zipcode'],
                'City'                    => $result['inputs']['place'],
                'Address'                => $result['inputs']['street'],
                'HouseNumber'            => $result['inputs']['housenumber'],
                'HouseNumberExtension'     => $result['inputs']['addition'],
                'BirthDate'                => $result['inputs']['birthdate'],
                'Language'                => $result['inputs']['language'],
            ];
                
            $curl = curl_init();
            curl_setopt_array($curl, array(
                CURLOPT_URL             => 'https://www.sportivity.com/sportivity-api/Customers',
                CURLOPT_RETURNTRANSFER     => true, //Return output instead of printing it.
                CURLOPT_HTTPHEADER        => $headers,
                CURLOPT_POST             => true,
                CURLOPT_POSTFIELDS         => json_encode($body, JSON_FORCE_OBJECT),
                CURLOPT_SSL_VERIFYPEER     => false,
                CURLOPT_SSl_VERIFYHOST     => false,)
            );
            
            $result['response'] = curl_exec($curl);
            $result['errors'] = [];
             curl_close($curl);
            echo json_encode($result['response']);


Deze code word geactiveerd op het moment dat alle formulier velden correct zijn ingevuld.
Als response krijg ik de input velden terug inclusief een customer_id. wat goed is.

Ik vond dit alleen slordig en probeerde het in een class te maken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<?php
class Api {
    protected $base_url = 'https://www.sportivity.com/sportivity-api';
    protected $token;
    
    public function __construct($token){
        $this->token = $token;
    }

    
    protected function getHeaders(){
        return [
            "Content-Type: application/json",
            "Accept: application/json",
            "X-API-TOKEN: ".$this->token,
            "Connection: keep-alive",
        ];
    }

    
    public function prepareApi($url){
        $curl = curl_init();
        
        curl_setopt($curl, CURLOPT_URL, $this->base_url.$url);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_HTTPHEADER, $this->getHeaders());
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        
        $response = curl_exec($curl);
        curl_close($curl);
        
        return json_decode($response);
    }

    
    public function sendPostRequest($url, $body)
    {

        return $this->postRequest($url, $body);
    }


    
    private function postRequest($url, $body){
        $curl = curl_init;
        
        curl_setopt_array($curl, $this->getCurlPostOptions($url, $body));
        $response = curl_exec($curl);
        curl_close($curl);
        return json_encode($response);
    }

    
    private function getCurlPostOptions($url, $body){
        return [
            CURLOPT_URL             => $this->base_url.$url,
            CURLOPT_RETURNTRANSFER     => true, //Return output instead of printing it.
            CURLOPT_HTTPHEADER        => $this->getHeaders(),
            CURLOPT_POST             => true,
            CURLOPT_POSTFIELDS         => json_encode($body, JSON_FORCE_OBJECT),
            CURLOPT_SSL_VERIFYPEER     => false,
            CURLOPT_SSl_VERIFYHOST     => false,
            
        ];
    }

    
    public function getLocations(){
        return $this->prepareApi('/Locations');
    }
    
    
    public function getSubscriptions(){
        return $this->prepareApi('/MembershipDefinition');
    }
}


// $api = new Api();
// $test = $api->getLocations();
// var_dump($test->LocationResources);

?>

Vervolgens probeer ik de data dus zo op te halen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$api = new Api($token);
$result['response'] = $api->sendPostRequest('/Customers', $body);

Helaas krijg ik een response: "null" terug en weet ik niet waar dat aan ligt.

Toevoeging op 19/10/2021 12:04:11:

Vervolgens doe ik eigenlijk nog

echo $result;

wat dus in jquery met een ajax request word opgehaald en JSON.parse() op het result
 
PHP hulp

PHP hulp

09/12/2021 05:06:38
 
Ward van der Put
Moderator

Ward van der Put

19/10/2021 12:27:55
Quote Anchor link
Ik zie twee keer een curl_close(): die in prepareApi() sluit waarschijnlijk vroegtijdig de verbinding.
 
Jorn Reed

Jorn Reed

19/10/2021 12:34:38
Quote Anchor link
Ward van der Put op 19/10/2021 12:27:55:
Ik zie twee keer een curl_close(): die in prepareApi() sluit waarschijnlijk vroegtijdig de verbinding.


PrepareApi() is een oudere functie, die gebruik ik om alle subscriptions te tonen, kan het zo zijn dat hij vanwege de zelfde variabel naam de verbinding al sluit voordat ik die post request doe? Want in die post request open ik de verbinding bewijze van opnieuw.


Toevoeging op 19/10/2021 12:38:43:

Ward van der Put op 19/10/2021 12:27:55:
Ik zie twee keer een curl_close(): die in prepareApi() sluit waarschijnlijk vroegtijdig de verbinding.


ik had even de curl_close weggehaald, maar dat maakt geen verschil. Als ik het object in de console.log bekijk in jquery dan zie ik dat 'response' ="null"
 
Ozzie PHP

Ozzie PHP

19/10/2021 12:50:16
Quote Anchor link
$test->LocationResources

Waar komt die LocationResources vandaan?
 
Jorn Reed

Jorn Reed

19/10/2021 12:53:34
Quote Anchor link
Ozzie PHP op 19/10/2021 12:50:16:
$test->LocationResources

Waar komt die LocationResources vandaan?


Oh let maar niet op die call hoor. In ieder geval als je de locations ophaalde dan zaten ze in de ->locationResources. Vandaar dat ik dat een keer dumpte

Toevoeging op 19/10/2021 14:01:09:

stom foutje van mij. Ik vergat bij curl_init de () haha

Toevoeging op 19/10/2021 16:22:16:

Ik loop alleen tegen een ander probleem aan. Zodra ik de Post request maak, dan komt het in dit object
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$result['response'] = $call->sendPostRequest('/Customers', $body);

Dit object wordt vervolgens ge-echoed in een json_encode, en in de front end met jquery opgehaald. Het toont alle waardes die naar de API zijn gestuurd + een aangemaakt CustomerID. Alleen krijg ik het niet voor elkaar om het CustomerId in de PHP goed te ontvangen, ik heb die namelijk nodig voor een 2e api call. Het werkt allemaal een beetje gek omdat ik steeds met jquery een ajax call maak naar een php functie die met een WordPress ajax action word aangeroepen. Ik weet niet of iemand daar ervaring mee heeft?
 



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.