1

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のものです。

4

0 に答える 0