我试图从我的java代码调用Fidel的API,这个API只需要一个我们需要传入标头的身份验证密钥。 当我从邮递员那里点击 API 时,它就起作用了。但从我的java代码来看,它抛出401。
这是我的java代码:
URL url = new URL(environment.getBaseUrl() + "offers");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Accept", "application/json");
con.setRequestProperty("Fidel-Key", "my-secret-key-here");
con.setDoOutput(true);
ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
String json = ow.writeValueAsString(fidelCreateOfferRequest);
try (OutputStream os = con.getOutputStream()) {
byte[] input = json.getBytes(StandardCharsets.UTF_8);
os.write(input, 0, input.length);
}
int status = con.getResponseCode();
System.out.println("Http Status: " + status);
BufferedReader in;
if (status == 200) {
in = new BufferedReader(new InputStreamReader(con.getInputStream()));
} else {
in = new BufferedReader(new InputStreamReader(con.getErrorStream()));
System.out.println("cannot create offer. failed with status: " + status);
}
发生这种情况是因为我没有发送请求正文中的字段之一,之前没有注意到这一点。