GZIP экстракт, чтобы получить XML, но ответ странные символы - PullRequest
0 голосов
/ 16 мая 2018

У меня есть этот код, чтобы получить и XML из GZIP.Я обновлю весь код.

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, XML_POST_URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_POST, True);
curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($ch, CURLOPT_POSTFIELDS, XML_PAYLOAD);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:     text/xml','Connection: close'));

$result = curl_exec($ch);

if ( curl_errno($ch) ) {
  $result = 'cURL ERROR -> ' . curl_errno($ch) . ': ' . curl_error($ch);
  log_cron('ERRO', $result, $mid, 'ACESSO AO WEBSERVICE');
} else {
  $returnCode = (int)curl_getinfo($ch, CURLINFO_HTTP_CODE);
  switch($returnCode) {
    case 200:
      break;
    default:
      $result = 'HTTP ERROR -> ' . $returnCode;
      log_cron('ERRO', $result, $mid, 'ACESSO AO WEBSERVICE');
      break;
  }
}

curl_close($ch);


$arquivo = getZip($result);  
try {
    $xml = new SimpleXMLElement($arquivo);
}catch (Exception $e) {
    echo "Bad xml: ".$e->getMessage();
}


function getZip($stream) {
   $fp = fopen("arquivo.gz", "w");
   fwrite($fp, $stream, 2048);
   fclose($fp);
   sleep(2);
   $zp = gzopen("arquivo.gz", "r");
   $contents = gzread($zp, 10000);
   gzclose($zp);
   return $contents;
}

Но даже когда я извлекаю или пытаюсь прочитать байт в байт, ответ всегда одинаков.

Может ли кто-нибудь мне помочь?

введите описание изображения здесь

1 Ответ

0 голосов
/ 16 мая 2018
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');

должно быть

curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...