Ir ao conteúdo
  • Cadastre-se

Fopen para cURL


RKHM

Posts recomendados

Boa tarde,

Estou adaptando o código de um sistema que uso, tendo em vista que no meu ambiente de testes eu tenho o fopen() ativado, porém no ambiente de hospedagem que utilizo (produção), essa função é desativada por segurança.

No código, tenho a seguinte função:

    function PostRequest($url, $data, $optional_headers = null) {        $params = array('http' => array(                'method' => 'POST',                'content' => $data                ));        if ($optional_headers !== null) {            $params['http']['header'] = $optional_headers;        }        $ctx = stream_context_create($params);        $fp = @fopen($url, 'rb', false, $ctx);        if (!$fp) {            die("Problem reading data from " . $url . "");        }        $response = @stream_get_contents($fp);        //var_dump($response);        if ($response == false) {            die("Problem reading data from " . $url . "");        }        return $response;    }

Eu alterei-a para:

    function PostRequest($url, $data, $optional_headers = null) {    $params = array('http' => array(        'method' => 'POST',        'content' => $data        ));    if ($optional_headers !== null) {        $params['http']['header'] = $optional_headers;    }    //Customizations for fopen() or curl()    if (ini_get('allow_url_fopen') == true) {         $params = array('http' => array(            'method' => 'POST',            'content' => $data                ));        if ($optional_headers !== null) {            $params['http']['header'] = $optional_headers;        }            $ctx = stream_context_create($params);        $fp = @fopen($url, 'rb', false, $ctx);            if (!$fp) {                die("Problem reading data from " . $url . "");            }            $response = @stream_get_contents($fp);            //var_dump($response);            if ($response == false) {                die("Problem reading data from " . $url . "");            }            return $response;    }    else if (function_exists('curl_init')) {        $curl = curl_init($url);        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);        curl_setopt($curl, CURLOPT_HTTPHEADER, $params);        $response = curl_exec($curl);        curl_close($curl);        return $response;    }    else {               die("Problem reading data from " . $url . "");    }    }

O problema aqui é que obtenho o seguinte erro:

Notice: Array to string conversion in /path/classes/xmwsclient.class.php on line 133 API Error: No 'request' method was recieved

E pelo que andei pesquisando, o problema está aqui:

               curl_setopt($curl, CURLOPT_HTTPHEADER, $params);

O problema é que não sei como adaptar essa parte, tendo em vista que o array $params é criado assim:

    $params = array('http' => array(        'method' => 'POST',        'content' => $data        ));    if ($optional_headers !== null) {        $params['http']['header'] = $optional_headers;    }

E quando mando imprimir o array, obtenho o seguinte:

Array ( [http] => Array ( [method] => POST [content] => 0e0c97c0663f5db12a6ccfef0a513da3 GetSettings 1 ) )
A

Alguém poderia me dar uma ajuda?

Obrigado,

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...