Programmazione

PHP 5.3.x e bug di cUrl

Questo pomeriggio mi sono imbattuto in un’anomalia decisamente assurda che coinvolge cUrl di PHP 5.3.x per Windows.

Dovevo collegarmi ad un webservice REST tramite cUrl. Cosa che faccio ogni giorno.
La chiamata passa delle credenziali e/o dei parametri per ottenere dei valori dal servizio.

Con una coppia di credenziali, la pagina andava in errore.

Inizialmente ho pensato ad un problema di codifica caratteri, che “sporcava” la chiamata al webservice. Nella fattispecie, temevo che il carattere % fosse la causa.
Ma convertendolo in qualunque modo, non be uscivo.

Ad un certo punto ho notato che escludendo una classe crittografica, la pagina si riprendeva, ma a me quella classe serviva.
Stavo pensando alla BRUTTISSIMA soluzione di mettere uno switch su quelle credenziali specifiche per passare user e password hardcoded, ma sarebbe stato davvero poco elegante, con zero scalabilità, ed un elevato tasso di manutenzione se il problema si fosse ripresentato con altre credenziali.

Poi, all’ennesima pagina di Stackoverflow analizzata, un barlume di speranza (e a dirla tutta, non ricordo se fosse su un altro sito o sempre su Stackoverflow): un esempio dove quando cUrl va in errore, mi indica l’errore (nel mio codice non l’avevo implementato).
Ed eccolo lì: Problem (2) in the Chunked-Encoded data

Non era la risposta, ma era una traccia.

Ricomincia la ricerca, e sulle prime, il morale iniziava a tracollare: è un bug di cUrl, che hanno risolto (ma tutti gli esempi, riportavano comandi per ubuntu/linux).
Aggiornare PHP? Non al momento, per svariati motivi (ma spero nel brevissimo).
E quindi? Ho speranze?

Forse!
Cercando, qualcuno accenna all’utilizzo di http 1.0, ma non spiega come configurare questo parametro.

Infine, la luce:

curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);

e con questo, il problema, almeno per adesso, pare mitigato.

Ed ecco anche il link al post che mi ha risolto il problema (era di Stackoverflow, sì!): https://stackoverflow.com/questions/29146515/curl-problem-2-in-the-chunked-encoded-data

 

Lascia una risposta

18 − 3 =

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.