当试图下载一个MP3;发生错误“远程服务器返回错误:NotFound。”

时间:2011-07-26 06:47:54

标签: windows-phone-7

当我下载这两个相同的链接时 a link!和http://files.sparklingclient.com/099_2010.07.09_WP7_Phones_In_The_Wild.mp3 它们都可以通过IE下载。但是当我在wp7下载时,lans可以下载第一个显示错误“”远程服务器返回错误:NotFound。“”  我不知道为什么.is webURL不适合wp7?

private void Button_Click(object sender, RoutedEventArgs e)
{
    stringUri = "http://upload16.music.qzone.soso.com/30828161.mp3";
  //stringUri = "http://files.sparklingclient.com/079_2009.08.20_ElementBinding.mp3";
    Uri uri = new Uri(stringUri, UriKind.Absolute);            
    GetMusic(uri);
}
private void GetMusic(Uri uri)
{
    request = WebRequest.Create(uri) as HttpWebRequest;
    request.Method = "Post";
    request.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";            
    string header= request.Accept;
    request.BeginGetResponse(new AsyncCallback(GetAsynResult),request);

}
void GetAsynResult(IAsyncResult result)
{           

    HttpWebResponse reponse = request.EndGetResponse(result) as HttpWebResponse;
    if (reponse.StatusCode == HttpStatusCode.OK)
    {

       Stream stream=reponse.GetResponseStream();
       SaveMusic(stream, "music");
       ReadMusic("music");
       Deployment.Current.Dispatcher.BeginInvoke(
           () =>
           {
               me.AutoPlay = true;
               me.Volume = 100;
               songStream.Position = 0;
               me.SetSource(songStream);
               me.Play();
          });

    }        
}
protected void SaveMusic(Stream stream,string name)
{

            IsolatedStorageFile fileStorage = IsolatedStorageFile.GetUserStoreForApplication();
            if (!fileStorage.DirectoryExists("Source/Music"))
            {
                fileStorage.CreateDirectory("Source/Music");
            }
            using (IsolatedStorageFileStream fileStream = IsolatedStorageFile.GetUserStoreForApplication().OpenFile("Source\\Music\\" + name + ".mp3", FileMode.Create))
            {
                byte[] bytes = new byte[stream.Length];
                stream.Read(bytes, 0, bytes.Length);
                fileStream.Write(bytes, 0, bytes.Length);
                fileStream.Flush();
            }

}
protected void ReadMusic(string name)
{

        using (IsolatedStorageFile fileStorage = IsolatedStorageFile.GetUserStoreForApplication())
        {
            songStream = null;
            songStream = new IsolatedStorageFileStream("Source\\Music\\" + name + ".mp3", FileMode.Open, fileStorage);                  

        }

}

2 个答案:

答案 0 :(得分:1)

请尝试更改

request.Method = "Post" 

request.Method = "Get" 

答案 1 :(得分:0)

如果您在模拟器上遇到此问题,您是否尝试过运行Fiddler?它将拦截HTTP请求,您可以查看对服务器的调用是否是您期望的调用。

请记住在启动Fiddler后关闭/重新打开模拟器,以便它能够接收代理。

错误的SSL证书也会发生NotFound响应。这似乎与您的问题无关,但需要记住一些事项。