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

.NET应用调用Jira API获取项目工单遇404/空响应求助

排查Jira API调用404/空响应问题的步骤

1. 修正API请求路径

你当前使用的/rest/api/3/issue/devissue不符合Jira API规范:

  • 若要获取单个工单,正确格式为/rest/api/3/issue/{issueIdOrKey}(例如/rest/api/3/issue/DEV-123)
  • 若要获取项目下所有工单,需使用搜索API,通过JQL过滤项目,完整路径示例:
    https://mycompany.atlassian.net/rest/api/3/search?jql=project=DevProject
    

2. 验证Basic认证逻辑

使用API Token时,Basic认证需遵循以下规则:

  • 用户名部分必须是你的Jira注册邮箱(而非显示用户名)
  • 密码部分为你生成的API Token
  • 需将邮箱:API Token拼接后做Base64编码,确保GetEncodedCredentials方法实现正确,示例代码:
    private string GetEncodedCredentials(string email, string apiToken)
    {
        string credentials = $"{email}:{apiToken}";
        byte[] bytes = Encoding.ASCII.GetBytes(credentials);
        return Convert.ToBase64String(bytes);
    }
    

3. 移除冗余请求头

GET请求无需设置ContentType(该头用于POST/PUT请求指定发送内容类型),删除以下代码行:

request.ContentType = "application/json";

4. 添加异常捕获与错误日志

当前代码未处理异常,无法获取404的具体原因,添加异常捕获逻辑来查看响应详情:

try
{
    using (response = request.GetResponse() as HttpWebResponse)
    {
        StreamReader reader = new StreamReader(response.GetResponseStream());
        responseContent = reader.ReadToEnd();
    }
}
catch (WebException ex)
{
    using (var errorResponse = (HttpWebResponse)ex.Response)
    {
        using (var reader = new StreamReader(errorResponse.GetResponseStream()))
        {
            string errorText = reader.ReadToEnd();
            // 打印或记录errorText,Jira会返回具体错误原因
        }
    }
}

5. 用Postman验证API可用性

先脱离代码测试API是否正常:

  • 请求方法选GET,URL填https://mycompany.atlassian.net/rest/api/3/search?jql=project=DevProject
  • 认证方式选Basic Auth,用户名填邮箱,密码填API Token
  • 发送请求,若Postman也报错,说明是权限或路径问题;若Postman正常,再回到代码排查编码或请求头问题。

6. 检查账号权限

确保你的Jira账号拥有DevProject项目的Browse Projects权限(这是查看工单的基础权限),且账号未被限制访问API。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 07:57:35