You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# HttpClient Delete请求遇Unauthorized错误,Postman操作亦异常

解决Basic授权下C# Delete请求返回Unauthorized、Postman操作失败的问题

以下是针对问题的排查和修复建议:

  • 校验Basic授权字符串一致性
    对比Postman生成的Authorization头和C#代码中的字符串,确保完全一致(包括空格、Base64编码结果)。可以手动验证编码:将用户名:密码用ASCII编码后转Base64,和代码中的字符串对比,避免编码错误。

  • 规范请求头写法
    HTTP头名虽不区分大小写,但部分服务器可能严格校验,建议将代码中的authorization改为标准的Authorization,确保服务器能识别授权信息。同时对比Postman的请求头列表,确认C#代码没有遗漏必要的请求头。

  • 调整HttpClient的授权配置方式
    避免HttpRequestMessage和HttpClient默认头的冲突,建议直接通过DefaultRequestHeaders配置授权:

    HttpClient client = new HttpClient();
    
    // 清除默认授权头,避免冲突
    client.DefaultRequestHeaders.Authorization = null;
    // 添加Basic授权
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", "你的Base64编码字符串");
    // 设置User-Agent
    client.DefaultRequestHeaders.UserAgent.ParseAdd("你的User-Agent值");
    
    var request = new HttpRequestMessage(
        HttpMethod.Delete, 
        new Uri("https://listing-external-sit.hepsiburada.com/Listings/merchantid/*******/sku/*******/merchantsku/*********")
    );
    
    using (var response = await client.SendAsync(request))
    {
        // 先读取响应内容,获取详细错误信息
        var body = await response.Content.ReadAsStringAsync();
        if (!response.IsSuccessStatusCode)
        {
            MessageBox.Show($"状态码:{(int)response.StatusCode}\n响应内容:{body}");
            return;
        }
        MessageBox.Show(body);
    }
    
  • 核对URL完整性
    确认C#代码中的URL和Postman使用的完全一致,检查路径参数(merchantid、sku、merchantsku)是否正确,避免拼写错误或路径格式问题。

  • 获取详细响应信息
    移除response.EnsureSuccessStatusCode()的直接调用,先读取响应内容,服务器返回的错误详情(如授权无效、权限不足)能直接帮你定位问题根源。

内容的提问来源于stack exchange,提问作者Erkan Demir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 13:02:11