Bad request 400 при попытке загрузить post-запросом jpg картинку на сайт

97
26 июня 2021, 20:50

Пытаюсь загрузить на сервер сайта картинку. в Mozille через инструмент Network посмотрел какие заголовки уходят на сервер вместе с файлом и попытался их имитировать.

    public void uploadImageToServer() throws Exception {
    File file=new File("/tmp/toon.jpg");
    if (file.exists()){
        MultipartEntityBuilder builder = MultipartEntityBuilder.create();
        ContentType fileContentType = ContentType.create("image/jpeg");
        String fileName = file.getName();
        builder.addBinaryBody("client_files", file, fileContentType, fileName);
        HttpEntity entity = builder.build();
        HttpPost request = new HttpPost("https://newsprice.info/wp-admin/admin-ajax.php");
        request.setHeader("Accept", "application/json, text/javascript, */*; q=0.01");
        request.setHeader("Accept-Language", "en-US,en;q=0.5");
        request.setHeader("Connection", "keep-alive");
        request.setHeader("Content-Type", "multipart/form-data; boundary=---------------------------82762255611166");
        request.setHeader("Cookie", "wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_5...wiZW1haWwiOiJncmVna3VrdWtldkB5YW5kZXgucnUifQ%3D%3D");
        request.setHeader("DNT", "1");
        request.setHeader("Host", "newsprice.info");
        request.setHeader("Referer", "https://newsprice.info/account/?user=361&tab=postform");
        request.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0");
        request.setHeader("X-Requested-With", "XMLHttpRequest");
        request.setEntity(entity);
        CloseableHttpClient client = HttpClients.createDefault();
        CloseableHttpResponse closeableHttpResponse= client.execute(request);
        int i= closeableHttpResponse.getStatusLine().getStatusCode();
    }
}

Но вместо 200 ответа я получаю 400 (badrequest).

Вот как выглядят заголовки и параметры в Mozille

Answer 1

Уберите

 request.setHeader("Content-Type", "multipart/form-data; boundary=---------------------------82762255611166");

, и вообще все setHeader'ы

Answer 2

Если убрать header'ы то также остается 400 bad request. Мне кажется дело в том, как формируется entity в строке

request.setEntity(entity);

Пробовал так: всё равно 400...

    DefaultHttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("https://newsprice.info/wp-admin/admin-ajax.php");
    File file = new File("/tmp/toon.jpg");
    MultipartEntityBuilder multipartEntityBuilder=MultipartEntityBuilder.create();
    multipartEntityBuilder.setCharset(Charset.forName("UTF-8"));
    HttpEntity httpEntity = multipartEntityBuilder
            .addBinaryBody("file", file, ContentType.create("image/jpeg"), file.getName())
            .build();
    String contentType=httpEntity.getContentType().getValue();
    httppost.setHeader("Host", "newsprice.info");
    httppost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0");
    httppost.setHeader("Accept", "application/json, text/javascript, */*; q=0.01");
    httppost.setHeader("Accept-Language", "en-US,en;q=0.5");
    httppost.setHeader("Accept-Encoding", "gzip, deflate, br");
    httppost.setHeader("Referer", "https://newsprice.info/account/?user=361&tab=postform");
    httppost.setHeader("X-Requested-With", "XMLHttpRequest");
    httppost.setHeader("Content-Type", contentType);
    httppost.setHeader("DNT", "1");
    httppost.setHeader("Connection", "keep-alive");
    httppost.setHeader("Pragma", "no-cache");
    httppost.setHeader("Cache-Control", "no-cache");
    httppost.setEntity(httpEntity);
    System.out.println("executing request " + httppost.getRequestLine());
    int o= httpclient.execute(httppost).getStatusLine().getStatusCode();
READ ALSO
Как получить объект из JSON

Как получить объект из JSON

Сейчас я делаю следующим образом:

125
Как изменить TextField с другого фрейма?

Как изменить TextField с другого фрейма?

Пишу программу в которой вызывается 2й фрейм в котором происходит выбор папкиПри нажатии кнопки закрывается фрейм и путь передается в 1й фрейм...

142
Сжатие изображений JPG до указанного размера в байтах

Сжатие изображений JPG до указанного размера в байтах

Есть ли библиотека Java, в которой была бы функция сжатия JPG изображения до определённого (в параметрах) размера в байтах?

114
Regex: составление запроса

Regex: составление запроса

Пожалуйста, помогите составить регулярное выражение, которое будет матчить такой текст:

82