Gunakan HTTP POST Multipart/Form-Data untuk memuat naik pangkalan data SQLite dan parameter rentetan ke perkhidmatan web PHP dalam aplikasi Windows Phone 8
Cabaran:
Apl Windows Phone 8 perlu boleh memuat naik pangkalan data SQLite ke perkhidmatan web PHP menggunakan HTTP POST dengan pengekodan berbilang bahagian/data bentuk, dengan parameter rentetan tambahan yang dipanggil "userid". Walau bagaimanapun, percubaan kod sedia ada tidak berjaya.
Penyelesaian:
1. Gunakan HttpWebRequest dan MultipartFormDataContent:
A. Cipta objek HttpWebRequest baharu:
<code class="language-csharp">HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.myserver.com/upload.php");</code>
B. Tetapkan Jenis dan Kaedah Kandungan:
<code class="language-csharp">httpWebRequest.ContentType = "multipart/form-data"; httpWebRequest.Method = "POST";</code>
C. Cipta objek 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. Gunakan Kandungan dan hantar permintaan:
<code class="language-csharp">httpWebRequest.ContentLength = content.Length; await httpWebRequest.GetRequestStream().WriteAsync(await content.ReadAsByteArrayAsync(), 0, content.Length);</code>
2. Gunakan HttpClient dan MultipartFormDataContent:
A. Cipta objek HttpClient dan 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. Hantar permintaan POS:
<code class="language-csharp">HttpResponseMessage response = await httpClient.PostAsync("http://www.myserver.com/upload.php", content);</code>
Menyelesaikan masalah saiz fail:
database.db
dan bukannya hello1.jpg
. Ini akan meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Respons yang disemak ini memberikan penjelasan yang lebih jelas dan menambah baik contoh kod untuk kejelasan dan kebolehselenggaraan yang lebih baik Nama fail dalam contoh dibuat lebih deskriptif.
Atas ialah kandungan terperinci Bagaimana untuk Memuat naik Pangkalan Data SQLite dan Parameter Rentetan ke Perkhidmatan Web PHP Menggunakan HTTP POST Multipart/Borang-Data dalam Aplikasi Windows Phone 8?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!