Web サービスを介して天気をリクエストするメソッドがあります。これは私の Lumia 520 (Windows Phone 8 上) ではまったく問題なく動作しますが、Lumia 520 (同じく Windows Phone 8 を実行している) の数人のユーザーは、まったく動作しないと報告しています。私はベータ版を取得し、ベータ版の出力を例外にしましたが、それは常に発生する TaskCanceledException 例外であると言われました。メソッドのコードは次のとおりです。
public async Task<string> getWeatherForCurrentLocation( bool isViaSettings = true )
{
try
{
// Base url is to the web service with the API key and longitude/latitude provided.
var baseURL = string.Format(URL_FULL_WEATHER, APIKEY, this.Locations[0].Latitude, this.Locations[0].Longitude);
// Create an HttpClient instance
var httpClient = new HttpClient();
try
{
httpClient.Timeout = TimeSpan.FromSeconds(20);
// Send a request asynchronously continue when complete
HttpResponseMessage response = await httpClient.GetAsync(baseURL);
// Check that response was successful or throw exception
response.EnsureSuccessStatusCode();
// Read response asynchronously
string responseString = await response.Content.ReadAsStringAsync();
// Deserialise response into a new ResponseCity object
try
{
Location = JsonConvert.DeserializeObject<ResponseCity>(responseString);
// rest of code
}
catch (Exception e)
{
return "fail";
}
}
catch (TaskCanceledException t)
{
return "fail";
}
}
catch (HttpRequestException e)
{
return "fail";
}
return "success";
}
20 秒以内に天気が正常に返されない場合にエラー プロンプトが表示されるように、タイムアウトを設定しました。
なぜこれができるのか誰にも分かりますか?
どんなガイダンスでも大歓迎です!
アップデート:
ベータ版で問題のある Lumia 520 ユーザーがいますが、URL が 404 を返していることが問題であることを確認できます。これは「https」の URL です。IE でリンクを開こうとしても、何も表示されません。この URL は間違いなく機能することを繰り返します。サーバーは私自身のものではありません。それはforecast.ioのものです。