Java代码调用Fidel API返回401认证错误求助
解决Java调用Fidel API返回401未授权问题
排查与修复步骤
核对密钥准确性
确保代码中填写的my-secret-key-here和Postman里使用的密钥完全一致,注意不要有大小写错误、多余空格或特殊字符遗漏——复制粘贴时很容易出现这类问题。校验请求头名称
确认请求头名称是Fidel-Key,虽然HTTP协议规定头名称不区分大小写,但部分API服务会严格校验大小写,避免写成fidel-key或FIDEL-KEY这类变体。查看错误响应详情
当前代码仅打印了状态码,建议读取错误流的完整内容,Fidel API通常会返回具体的401原因(比如密钥无效、格式错误)。修改代码添加错误内容打印:// 在else分支中添加以下代码 String errorContent = in.lines().collect(Collectors.joining("\n")); System.out.println("401错误详情: " + errorContent);检查请求URL一致性
确认environment.getBaseUrl() + "offers"拼接后的URL和Postman中的请求URL完全相同,比如是否缺少斜杠导致URL拼接错误(例:Postman是https://api.fidel.uk/v1/offers,代码可能拼成https://api.fidel.ukoffers)。排查代理或拦截器影响
如果代码运行环境存在代理,可能会修改或丢失请求头,尝试关闭代理后测试;同时检查是否有自定义的代码拦截器(比如包装HttpURLConnection的工具类)篡改了请求头。换用HttpClient测试
部分场景下HttpURLConnection的默认配置可能引发问题,可尝试使用Java 11+自带的HttpClient重新编写请求,示例代码:// 先构造请求JSON字符串(和原代码一致) ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter(); String json = ow.writeValueAsString(fidelCreateOfferRequest); // 使用HttpClient发送请求 HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(environment.getBaseUrl() + "offers")) .header("Content-Type", "application/json") .header("Accept", "application/json") .header("Fidel-Key", "你的真实密钥") .POST(HttpRequest.BodyPublishers.ofString(json)) .build(); try { HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println("状态码: " + response.statusCode()); System.out.println("响应内容: " + response.body()); } catch (IOException | InterruptedException e) { e.printStackTrace(); }
内容的提问来源于stack exchange,提问作者Ankita Srivastava
相关产品推荐
相关产品推荐

