Utilisez HTTP POST Multipart/Form-Data pour télécharger la base de données SQLite et les paramètres de chaîne sur le service Web PHP dans l'application Windows Phone 8
Défi :
Une application Windows Phone 8 doit pouvoir télécharger une base de données SQLite sur un service Web PHP à l'aide de HTTP POST avec un encodage multipart/form-data, avec un paramètre de chaîne supplémentaire appelé « userid ». Cependant, les tentatives de code existantes ont échoué.
Solution :
1. Utilisez HttpWebRequest et MultipartFormDataContent :
A. Créez un nouvel objet HttpWebRequest :
<code class="language-csharp">HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.myserver.com/upload.php");</code>
B. Définir le type et la méthode de contenu :
<code class="language-csharp">httpWebRequest.ContentType = "multipart/form-data"; httpWebRequest.Method = "POST";</code>
C. Créez un objet MultipartFormDataContent :
<code class="language-csharp">using (var content = new MultipartFormDataContent()) { // 添加文件字节 var streamContent = new StreamContent(new MemoryStream(file_bytes)); content.Add(streamContent, "profile_pic", "hello1.jpg"); // 文件名 "hello1.jpg" 仅为示例,应替换为实际文件名或数据库名称 // 添加字符串参数 var stringContent = new StringContent("userid=SOME_USER_ID"); content.Add(stringContent, "userid"); }</code>
D. Utiliser le contenu et envoyer une demande :
<code class="language-csharp">httpWebRequest.ContentLength = content.Length; await httpWebRequest.GetRequestStream().WriteAsync(await content.ReadAsByteArrayAsync(), 0, content.Length);</code>
2. Utilisez HttpClient et MultipartFormDataContent :
A. Créez de nouveaux objets HttpClient et MultipartFormDataContent :
<code class="language-csharp">HttpClient httpClient = new HttpClient(); using (var content = new MultipartFormDataContent()) { // 添加文件字节 content.Add(new StreamContent(new MemoryStream(file_bytes)), "database", "database.db"); // 使用更具描述性的名称 "database" 和 "database.db" // 添加字符串参数 content.Add(new StringContent("userid=SOME_USER_ID"), "userid"); }</code>
B. Envoyer la demande POST :
<code class="language-csharp">HttpResponseMessage response = await httpClient.PostAsync("http://www.myserver.com/upload.php", content);</code>
Dépannage des problèmes de taille de fichier :
database.db
au lieu de hello1.jpg
. Cela améliorera la lisibilité et la maintenabilité du code. Cette réponse révisée fournit des explications plus claires et améliore les exemples de code pour une meilleure clarté et maintenabilité. Les noms de fichiers dans les exemples sont rendus plus descriptifs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!