【问题标题】:C# HttpClient throws Exception on no Sucess Status Codes [closed]C# HttpClient 在没有成功状态代码时抛出异常 [关闭]
【发布时间】:2017-05-22 14:31:45
【问题描述】:

我遇到了一个非常奇怪的问题。当我请求的网页返回的状态代码不是 2** 状态代码时,HttpClient 会抛出异常。

实施:

try {

    //post-anfrage an webservice starten
    var request = await httpClient.PostAsync(SettingsPage.WebServiceURL + site,
                content);

    if (!request.IsSuccessStatusCode) {
        if (request.StatusCode == System.Net.HttpStatusCode.Unauthorized) {
            await User.Instance.Logout();
        }
        var message = await request.Content.ReadAsStringAsync();
        RaiseErrorMessage(null, message);
    }

    SaveCookies(request);

    timer.Change(PING_INTERVAL, PING_INTERVAL);

    return request;
}
catch (TaskCanceledException e) {
    RaiseConnectionError(null, "Verbindung zu Webservice fehlgeschlagen!");
    return null;
}
catch (Exception ex) {
    RaiseConnectionError(null, "Es ist etwas schief gelaufen..." + System.Environment.NewLine + "Bitte Support Kontaktieren!");
    Debug.WriteLine("AppWarehouse.pro: " + ex.Message);
    Debug.WriteLine("AppWarehouse.pro: " + ex.StackTrace);
    return null;
}
}

我不明白它为什么会这样做。对我来说,这种行为没有理由。我会很高兴得到修复或帮助修复它。

【问题讨论】:

  • !request.IsSuccessStatusCode - 如果 StatusCode 不在 2** 范围内,则会引发错误。例如,如果您收到 404,则该行代码将导致错误。您正在发布内容,并且想知道操作是否按预期进行。
  • @DanielHollinrake 不是这不是导致问题的原因。它仍然会抛出名为 HttpRequestException 的异常。
  • 那么,代码是在if语句之前抛出异常吗?如果是这样,您能否确认一下 httpClient 是什么类型?
  • @DanielHollinrake 在 if 语句之前是... HttpClient 来自 System.Net.Http;
  • 你怎么知道有响应状态,即 404 或 403 而不是 HResult?

标签: c# exception xamarin httpclient


【解决方案1】:

我已修复它...这是 Xamarin 结合程序集的奇怪行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多