Correggere l'errore SSL certificate problem: unable to get local issuer certificate in PHP
In pratica devo collegare un registratore di cassa al mio gestionale scritto in PHP.
E gli devo mandare una richiesta tramite cURL.
In pratica devo collegare un registratore di cassa al mio gestionale scritto in PHP.
E gli devo mandare una richiesta tramite cURL.
In questo articolo abbiamo introdotto l'uso di CURL in C++ facendo un esempio di base.
In genere però é più probabile dover trasformare la risposta che ci arriva come oggetto CURLcode, ad esempio in string perchè poi processata.
Ad esempio se ci arriva in JSON (come nel mio caso).
Quindi dobbiamo convertire CURLcode in string.
Per farlo dobbiamo apportare un pò di modifiche; cominciamo dal file .h:
#ifndef READ_H
#define READ_H#include <iostream>
#include <curl/curl.h>using namespace std;
extern "C" int readCurlHelper(char *data, size_t size, size_t nmemb, string *buffer);
class Read {
public:
Read();
virtual ~Read();
void read(string file);
size_t curlToString(char *data, size_t size, size_t nmemb, string *buffer);
private:
string response;
string url;
CURL *curl;
CURLcode res;
struct curl_slist *headers;
};#endif
Abbiamo aggiunto due funzioni, una interna che si occupa di costruire la stringa, e una esterna che si occupa della conversione.
Oggi vedremo come usare la libreria CURL con il C++.
Il codice che vedremo è abbastanza multi piattaforma; ovviamente è necessario installare CURL e linkare il percorso giusto alla libreria, cose che differiscono da OS a OS.
Su Linux e Mac dovreste avere già CURL preinstallato; su Windows vi consiglio di procedere installando Cygwin.
Non mi soffermo su questo passaggio, ma do per scontato che l'abbiate fatto.
Detto ciò creiamo una nostra classe per usare questa libreria.
Cominciamo con il file .h:
#ifndef READ_H
#define READ_H#include <iostream>
#include <curl/curl.h>using namespace std;
class Read {
public:
Read();
virtual ~Read();
void read(string file);
private:
string url;
CURL *curl;
CURLcode res;
struct curl_slist *headers;
};#endif
Nella classe abbiamo definito una funzione per leggere i dati da un file preso in remoto; la funzione richiede un unico parametro, che è appunto il file da chiamare.