2009-04-09 19 views
0

Je travaille avec un client pour obtenir un gzip depuis son webservice. Je suis en mesure d'obtenir une réponse à mon appel suivant:Fichier de SOAP, comment économiser?

$response = $client->call('branchzipdata', $param); 
$filename = "test.gzip"; 
if (!$handle = fopen($filename, 'a')) { 
    echo "Cannot open file ($filename)"; 
    exit; 
} 

if (fwrite($handle, $response) === FALSE) { 
    echo "Cannot write to file ($filename)"; 
    exit; 
} 

Maintenant, quand je tente d'écrire qu'un fichier, tel que « test.gzip », je suis incapable de l'ouvrir ensuite ... plus probablement parce que Je fais quelque chose d'horrible. Toute idée serait appréciée.

EDIT:

Pour une raison quelconque, je gardais le fichier comme « .gzip » au lieu de « .gz » ... Donc, pour l'avoir, je travaille sont maintenant:

$response = $client->call('call', $param); 
$content = base64_decode($response); 
$filename = "output_zip.gz"; 
if (!$handle = fopen($filename, 'w')) { 
    echo "Cannot open file ($filename)"; 
    exit; 
} 

if (fwrite($handle, $content) === FALSE) { 
    echo "Cannot write to file ($filename)"; 
    exit; 
} 
fclose($handle); 
echo system("gzip -d $filename"); 

Répondre

1

(Modifié à partir des commentaires)

Si la valeur de retour est codée en base64, vous devez la décoder en base64 avant de l'écrire dans le fichier. Sinon, vous pouvez l'écrire dans un fichier que vous avez ensuite base64-décoder à un autre fichier avant d'essayer de l'ouvrir, mais cela semble un peu inutile par rapport au décodage juste quand vous l'obtenez.

+0

Désolé, j'ai oublié d'inclure ce morceau de code, mais je suis en train de fermer la poignée. À partir de ce que j'ai lu, je pense que je m'approche de la mauvaise façon. Je dois encore faire face à du savon. – Thomas

+0

Que se passe-t-il lorsque vous essayez de lire le fichier? Pouvez-vous l'ouvrir, mais ce n'est pas un fichier gzip? Est-il encodé en base64 par hasard? –

+0

Je ne suis plus au travail, mais oui, il est codé en base64. La partie qui m'a troublé était de le décoder avant d'écrire le contenu sur test.gzip ou de décoder le contenu par la suite? Je suppose que je suis juste confus quand il s'agit de gérer la réponse que je reçois de la demande de savon. Merci de votre aide! – Thomas