Я использую HTTP-метод post для вызова Gitlab API, который, в свою очередь, дает мне код ответа 400.
Я протестировал api gitlab с почтальоном с предоставлением заголовков проперов и тела контента в виде JSON.все работало нормально и.(Я использую gitlab create branch api)
Я отладил приложение с помощью eclipse, и есть какая-то конкретная строка, которая дала мне null
Я использую Apache http client 4.5.5для обработки http-запросов.
это мой первый метод для создания ветки
public HttpResponse createBranch(String projectId, String branchName, String ref) {
// url is ok, i debugged it
String url = this.API_BASE_URL + projectId + "/repository/branches";
//branchName = "uifix branch";
//ref = "master";
JSONObject obj = new JSONObject();
try {
obj.put("branch", branchName);
obj.put("ref", ref);
} catch (JSONException e) {
e.printStackTrace();
}
Map<String, String> headerParams = new HashMap<String, String>();
headerParams.put("Private-Token", PAT);
headerParams.put("Content-Type", "application/json; utf-8");
headerParams.put("Accept", "application/json");
return HttpUtility.httpPostForResourceCreation(url, headerParams, obj.toString());
}
, затем вызову следующий метод из класса httputlity.
public static HttpResponse httpPostForResourceCreation(String url, Map<String, String> headerParam, String body) {
HttpPost request = new HttpPost(url);
StringEntity params = new StringEntity(body, ContentType.APPLICATION_JSON);
for (Map.Entry<String, String> entry : headerParam.entrySet()) {
request.setHeader(entry.getKey(), entry.getValue());
}
request.setEntity(params); // I think problem is here. when I debugged it , it shows null.
return execute(request);
}
затем вызовет последний метод
private static HttpResponse execute(HttpRequestBase request) {
HttpClient httpClient = HttpUtility.buildHttpClient();
HttpResponse response = null;
try {
response = httpClient.execute(request);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if(response.getStatusLine().getStatusCode() == 201) {
System.out.println("resource successfully created: " + 201);
} else {
System.out.println("resource creation failed: " + response.getStatusLine().getStatusCode());
}
return response;
}
ожидаемый результат должен быть "ресурс успешно создан: + 201" вместо того, чтобы получать "создание ресурса не удалось: 400"
здесь я прикрепил свойсодержимое объекта запроса
Итак, что мне здесь не хватает?Любая помощь будет оценена.