2016-09-26 61 views
0

我正在創建Windows Phone 8.1 RT應用程序(VS 2015社區)。 我選擇了Windows.Web.Http.HttpClient與Web服務進行通信。Windows Phone 8.1 RT Windows.Web.Http.HttpClient在不同的認證響應中返回相同的數據

在一個頁面上,我想從Web服務項目的清單,下面的代碼:

public static async void GetItems(string username, string password, Action<ItemsModel, string, string> completion) 
    { 
      string methodUrl = "methodUrl"; 
      var resourceUri = new Uri(new Uri(baseUrl), methodUrl); 
      var client = new HttpClient(); 
      var byteArray = System.Text.Encoding.UTF8.GetBytes(username + ":" + password); 
      var basicAuth = Windows.Web.Http.Headers.HttpCredentialsHeaderValue("Basic", Convert.ToBase64String(byteArray)); 

      client.DefaultRequestHeaders.Authorization = basicAuth; 

      var response = new HttpResponseMessage(); 
      try 
      { 
       response = await client.GetAsync(resourceUri); 
      } 
      catch (Exception ex) 
      { 
      } 

      if (response.IsSuccessStatusCode) 
      { 
       var responseContent = await response.Content.ReadAsStringAsync(); 
       var items = DeserializeMyItems(responseContent); 
       completion(items, null, null); 
      } 
      else 
      { 
       //handle errors 
      } 
    } 

這一切運作良好,當我登錄(基本身份驗證)與一個用戶憑據。但是,當我嘗試其他用戶憑據(以及其他所有用戶憑證)時,我仍然得到與第一個相同的響應(如響應未刷新)。 第一次啓動應用程序時,我就連接的每個帳戶都發生這種情況。在第一次成功響應之後,我總是從該響應中獲取數據(即使我登錄了其他有效的用戶憑證)。

我檢查了這個請求的郵遞員,我在那裏我看到問題不在web服務中,但在我身邊。

我也檢查了響應的標題,並且我看到以下所有響應在標題(X-Vcap-Request-Id)中都有相同的標識。

有人可以指出導致這種行爲的錯誤嗎?

謝謝

回答

0

您可以創建HttpBaseProtocolFilter。類似這樣的:

HttpBaseProtocolFilter filter = new HttpBaseProtocolFilter(); 
    filter.CacheControl.WriteBehavior = HttpCacheWriteBehavior.NoCache; 
    filter.CacheControl.ReadBehavior = HttpCacheReadBehavior.MostRecent; 

    filter.ServerCredential = new PasswordCredential(resourceUri.ToString(), username, password); 

    HttpClient client = new HttpClient(filter); 
相關問題