“请求已经提交。”在WP8中使用Skydrive API时

时间:2014-01-01 16:06:09

标签: windows-phone-7 windows-phone-8 windows-phone-7.1 onedrive

我正在尝试使用SkyDrive API上传文件。我尝试使用下面的代码.GEtAccountInformaiton和GetQuotaInformaiton方法已成功执行但它总是设置此错误“请求已经提交。”结尾(在字段lblMessageBar.Text的UploadISOFileToSkyDriveAsync()方法中)。

   private async void GetAccountInformations()
    {
        try
        {
            LiveOperationResult operationResult = await App.liveConnectClient.GetAsync("me");
            var jsonResult = operationResult.Result as dynamic;
            string firstName = jsonResult.first_name ?? string.Empty;
            string lastName = jsonResult.last_name ?? string.Empty;
            lblMessageBar.Text = "Welcome " + firstName + " " + lastName;
            GetQuotaInformations();
        }
        catch (Exception e)
        {
            lblMessageBar.Text = e.ToString();
        }
    }
    private async void GetQuotaInformations()
    {
        try
        {
            LiveOperationResult operationResult = await App.liveConnectClient.GetAsync("me/skydrive/quota");
            var jsonResult = operationResult.Result as dynamic;
            quota = jsonResult.quota ?? string.Empty;
            available = jsonResult.available ?? string.Empty;
            lblMessageBar.Text = "Available space in bytes: " + ConvertBytesToGigabytes(available).ToString("#.####") + "GB " + "out of bytes " + ConvertBytesToGigabytes(quota).ToString("#.####") + "GB";
            UploadISOFileToSkyDriveAsync();

        }
        catch (Exception e)
        {
            lblMessageBar.Text = e.ToString();
        }
    }



    public async void UploadISOFileToSkyDriveAsync()
    {
        try
        {


            //http://developer.nokia.com/Community/Wiki/SkyDrive_-_How_to_upload_content_on_Windows_Phone
            IsolatedStorageFile fileStorage = IsolatedStorageFile.GetUserStoreForApplication();
            StreamWriter Writer = new StreamWriter(new IsolatedStorageFileStream("/shared/transfers/" + Constants.SkyDriveSavedLocationsFileName, FileMode.Append, fileStorage));
            //get the data from local database and write to the isolated file and then use the path of this file to saved it to skydrive..
            ObservableCollection<SavedLocationsTableEntity> SavedLocations = SavedLocationsTableEntity.GetSavedLocations();
            foreach (SavedLocationsTableEntity item in SavedLocations)
            {
                Writer.WriteLine(UtilityLib.GetGoogleURL(new System.Device.Location.GeoCoordinate(item.SavedLocationLatitude, item.SavedLocationLongitude, item.SavedLocationAltitude)));
            }

            Writer.Close();
            using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
            {
                fileStream = store.OpenFile("/shared/transfers/" + Constants.SkyDriveSavedLocationsFileName, FileMode.OpenOrCreate, FileAccess.Read);

                //strEncryptedFileStream = Encoding.Unicode.GetBytes(fileStream.ToString()).ToString();
                if (fileStream.Length == 0)
                {
                    lblMessageBar.Text = "No data to upload to SkyDrive..";
                    return;
                }
                fileStream.Close();
            }
            //remove previous calls

            var reqList = BackgroundTransferService.Requests.ToList();
            foreach (var req in reqList)
            {
                if (req.UploadLocation.Equals(new Uri(MyFilePathInIsoStore, UriKind.Relative)))
                    BackgroundTransferService.Remove(BackgroundTransferService.Find(req.RequestId));
            }

            //Make a new call to upload
            LiveOperationResult res = await App.liveConnectClient.BackgroundUploadAsync("me/skydrive", new Uri("/shared/transfers/" + Constants.SkyDriveSavedLocationsFileName, UriKind.Relative), OverwriteOption.Overwrite);
            lblMessageBar.Text = "File " + Constants.SkyDriveSavedLocationsFileName + " uploaded.";
            return;
        }
        catch (Exception ex)
        {
            lblMessageBar.Text = "Cannot upload to SkyDrive.. " + ex.Message;
            return;

        }
    }

1 个答案:

答案 0 :(得分:0)

这里看起来像MyFilePathInIsoStore

if (req.UploadLocation.Equals(new Uri(MyFilePathInIsoStore

在这里不等于"/shared/transfers/" + Constants.SkyDriveSavedLocationsFileName

new Uri("/shared/transfers/" + Constants.SkyDriveSavedLocationsFileName, UriKind.Relative)