我最近尝试创建与数据库相关的Windows Phone 8应用程序,因为我想要动态更新内容,每当我更新它时,我的应用程序中也会自动更新。,
所以我决定将所有数据保存在db(.sqlite)文件中并将其上传到服务器上
请注意,我没有在本地创建任何数据库,我将尝试从服务器下载sqlite文件。从该sqlite文件中我将获得数据库表。,
所以我的要求是
1)如何通过服务器URL从服务器下载(.sqlite)文件,如(www.example.com/folder/sample.sqlite)
2)如何在本地或隔离存储中保存该sqlite文件
我已经搜索并从网上获得了一些样本。但是所有这些都会在本地创建数据库。
所以请有人给我解决方案,如何直接从URL下载.sqlite文件并将其保存在本地。,
答案 0 :(得分:1)
好的,我明白了。问题是链接不直接包含文件,您必须先使用GetResponse()
然后获取ResponseStream。
要使其有效,您必须延长WebClient
(再次):
public static class Extensions
{
public static Task<WebResponse> GetResponseAsync(this WebRequest webRequest)
{
TaskCompletionSource<WebResponse> taskComplete = new TaskCompletionSource<WebResponse>();
webRequest.BeginGetResponse(
asyncResponse =>
{
try
{
WebRequest responseRequest = (WebRequest)asyncResponse.AsyncState;
WebResponse someResponse = (WebResponse)responseRequest.EndGetResponse(asyncResponse);
taskComplete.TrySetResult(someResponse);
}
catch (WebException webExc)
{
WebResponse failedResponse = (WebResponse)webExc.Response;
taskComplete.TrySetResult(failedResponse);
}
catch (Exception exc) { taskComplete.SetException(exc); }
}, webRequest);
return taskComplete.Task;
}
之后,您只需对代码进行一些修改:
public static async Task<DownloadStatus> DownloadFileSimle(Uri fileAdress, string fileName)
{
try
{
WebRequest request = WebRequest.Create(fileAdress);
if (request != null)
{
WebResponse response2 = await request.GetResponseAsync();
using (Stream resopnse = response2.GetResponseStream())
{
// the rest goes the same
正如我所尝试的那样有效并且文件下载了其内容。
希望这有帮助。