HTTP post запрос возврата 400 - PullRequest
       80

HTTP post запрос возврата 400

0 голосов
/ 26 сентября 2019

Я использую 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"

здесь я прикрепил свойсодержимое объекта запроса enter image description here

Итак, что мне здесь не хватает?Любая помощь будет оценена.

...