Est-ce que quelqu'un sait à propos de cette erreur: "Mauvaise signature d'en-tête local: 0x6D74683C"?
Le code suivant est utilisé pour télécharger un fichier zip et décompressez-le sur le téléphone.
Le même code utilisé pour travailler sur WP7, j'ai commencé à testé sur WP8 appareil, et chose étrange qui se passe... maintenant il fonctionne sur WP8 mais PAS sur WP7 plus.
Sur le WP7 il donne un ERREUR:
Wrong Local header signature: 0x6D74683C
Quelqu'un pourrait-il me dire quel est le problème ici?
De L'OBSERVATION (2 jours après la publication de la question)
J'ai quelques observations.... Partage ici dans le détail (Format de l'Image) ou (Format Excel)
LE CODE
using ICSharpCode.SharpZipLib.Zip;
using System;
using System.Diagnostics;
using System.IO;
using System.IO.IsolatedStorage;
using System.Net;
namespace iq_main.Network
{
public class IQ_Download
{
private string zipFilePassword = String.Empty;
private string fileNameToBeStoredAs = String.Empty;
private string urlToBeDownloaded = String.Empty;
private HttpWebResponse response;
public void Download(string _urlToBeDownloaded = GlobalConstants.DownloadLanguageConfigurationUrl, string _fileNameToBeStoredAs = GlobalConstants.DownloadLanguageConfigurationXmlFilename, string _zipFilePassword = GlobalConstants.DownloadZipsPassword)
{
urlToBeDownloaded = _urlToBeDownloaded;
fileNameToBeStoredAs = _fileNameToBeStoredAs;
zipFilePassword = _zipFilePassword;
System.Uri targetUri = new System.Uri(urlToBeDownloaded);
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(targetUri);
request.BeginGetResponse(new AsyncCallback(WebRequestCallBack), request);
}
void WebRequestCallBack(IAsyncResult result)
{
HttpWebRequest resultInfo = (HttpWebRequest)result.AsyncState;
response = (HttpWebResponse)resultInfo.EndGetResponse(result);
try
{
using (StreamReader httpwebStreamReader = new StreamReader(response.GetResponseStream()))
{
//open isolated storage to save files
using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication())
{
using (ZipInputStream s = new ZipInputStream(httpwebStreamReader.BaseStream))
{
if (zipFilePassword != String.Empty)
s.Password = zipFilePassword;//if archive is encrypted
ZipEntry theEntry;
try
{
//EXCEPTION OCCURS ON THE VERY NEXT LINE (while...)
while ((theEntry = s.GetNextEntry()) != null)
{
string directoryName = Path.GetDirectoryName(theEntry.Name);
string fileName = Path.GetFileName(theEntry.Name);
fileName = fileNameToBeStoredAs;
//create directory
if (directoryName.Length > 0)
{
isoStore.CreateDirectory(directoryName);
//Directory.CreateDirectory(directoryName);
}
if (fileName != String.Empty)
{
//save file to isolated storage
using (BinaryWriter streamWriter =
new BinaryWriter(new IsolatedStorageFileStream(theEntry.Name,
FileMode.Create, FileAccess.Write, FileShare.Write, isoStore)))
{
int size = 2048;
byte[] data = new byte[2048];
while (true)
{
size = s.Read(data, 0, data.Length);
if (size > 0)
streamWriter.Write(data, 0, size);
else
break;
}
}
}
}
}
catch (ZipException ze)
{
Debug.WriteLine(ze.Message);
}
}
}
}
} //try
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
}//WebRequestCallBack Method */
} //Class ends
}
LA SORTIE DE LA PILE
Step into: Stepping over method without symbols 'string.operator !='
Step into: Stepping over method without symbols 'ICSharpCode.SharpZipLib.Zip.ZipInputStream.Password.set'
Step into: Stepping over method without symbols 'string.operator !='
Step into: Stepping over method without symbols 'ICSharpCode.SharpZipLib.Zip.ZipInputStream.Password.set'
Step into: Stepping over method without symbols 'ICSharpCode.SharpZipLib.Zip.ZipInputStream.GetNextEntry'
A first chance exception of type 'ICSharpCode.SharpZipLib.Zip.ZipException' occurred in SharpZipLib.WindowsPhone7.dll
Step into: Stepping over method without symbols 'System.Exception.Message.get'
Step into: Stepping over method without symbols 'System.Diagnostics.Debug.WriteLine'
Wrong Local header signature: 0x6D74683C
A first chance exception of type 'ICSharpCode.SharpZipLib.Zip.ZipException' occurred in SharpZipLib.WindowsPhone7.dll
Wrong Local header signature: 0x6D74683C
source d'informationauteur wafers
Vous devez vous connecter pour publier un commentaire.
Le code d'en-tête 0x6D74683C correspond à la séquence ASCII
<htm
qui je suppose est le tronc d'en-tête HTML dans une page web. Si vous téléchargez le contenu de l' .archive zip, puis peut-être que cela signifie que le serveur web est de retour code HTML à la place de l'archive (une page d'erreur ou quelque chose comme ça). Peut-être que vous devriez vérifier le HTTP Content-Type d'en-tête avant de nourrir le ruisseau de la ICSharpCode.SharpZipLib.Lorsque vous utilisez WP7 vous recevez un code html à partir de dropbox:
Dans Wp8 ithis redirection fonctionne automatiquement, mais dans Wp7 cette redirection ne fonctionne pas.
Je pense que la solution pour vous: il suffit de changer le lien à nouveau(vous pouvez le trouver dans le fichier html que vous recevez)
Le problème était le même que "Leandro Taset" et "d.lavysh", a expliqué dans leurs réponses. Cependant, c'est encore inconnue, pourquoi WP7 obtient ajouts en-têtes HTML?
De toute façon, le code modifié, qui est qui travaille maintenant pour les deux WP7 et WP8 appareils. Ce code est également capable de télécharger des fichiers à partir d'un service d'Hébergement Web ou à partir de DropBox.
Le code que j'ai posté ci-dessus est presque la même, j'ai seulement modifié la
Download
méthode, qui, après modification, ressemble à ceci: