我尝试实现两个方法:一个创建要插入到TeamTailer中的候选人,另一个获取候选人并将其放入工作邀请中。
显然,当我调试这个方法时,它似乎在生成响应时抛出了一个异常。如果我尝试打印请求的主体,它会给我一个包含错误的json。如果我尝试用postman发送请求,它会返回一个201。所以它有效地创建了候选对象。
问题是,即使抛出了异常,仍然会创建候选对象。
其他问题:如果“createcandidate”方法抛出异常,我就不能调用另一个方法来创建工作申请(即让候选人参加工作)。
这是一个创建候选人唯一的方法:
private String createCandidateUniRest(String nome, String cognome, String email) throws UnirestException {
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.post("https://api.teamtailor.com/v1/candidates")
.header("Authorization", "Token token=" + authToken)
.header("X-Api-Version", "20210218")
.header("Content-Type", "application/vnd.api+json")
.body("{\n " +
"\"data\": {\n " +
"\"type\": \"candidates\",\n " +
"\"attributes\": {\n " +
"\"first-name\": \"" + nome + "\",\n " +
"\"last-name\": \"" + cognome + "\",\n " +
"\"email\": \"" + email + "\"\n }\n }\n}")
.asString();
JSONObject jsonResponse = new JSONObject(response.getBody());
String candidateId = jsonResponse.getJSONObject("data").getString("id");
return candidateId;
}
这是另一种方法,应该把人的工作机会:
public Response createJobApplication(String nome, String cognome, String email) throws CandidateCreationException {
String candidateId = "";
try {
candidateId = createCandidateUniRest(nome, cognome, email);
} catch (UnirestException e) {
throw new RuntimeException(e);
}
OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("application/vnd.api+json");
JsonObject data = new JsonObject();
JsonObject attributes = new JsonObject();
attributes.addProperty("cover-letter", "");
attributes.addProperty("sourced", true);
attributes.addProperty("send-user-notifications", true);
data.add("attributes", attributes);
JsonObject candidate = new JsonObject();
candidate.addProperty("type", "candidates");
candidate.addProperty("id", candidateId);
JsonObject relationships = new JsonObject();
relationships.add("candidate", candidate);
JsonObject job = new JsonObject();
job.addProperty("type", "jobs");
job.addProperty("id", jobId);
relationships.add("job", job);
data.add("relationships", relationships);
data.addProperty("type", "job-applications");
JsonObject jobApplication = new JsonObject();
jobApplication.add("data", data);
RequestBody body = RequestBody.create(mediaType, jobApplication.toString());
Request request = new Request.Builder()
.url("https://api.teamtailor.com/v1/job-applications")
.method("POST", body)
.addHeader("Authorization", "Token token=" + authToken)
.addHeader("X-Api-Version", "20210218")
.addHeader("Content-Type", "application/vnd.api+json")
.build();
try {
Response response = client.newCall(request).execute();
return response;
} catch (IOException e) {
throw new RuntimeException(e);
}
}
我尝试了postman,请求(如TeamTailor的API)似乎可以工作。但我的方法不行。我也尝试了调试,但我得到了这个错误:必须使用不同的密钥或iv进行GCM加密。
1条答案
按热度按时间qpgpyjmq1#
最终,JSON必须被正确格式化。