Imgur возвращает 500 внутренних ошибок сервера для двоичного тела - PullRequest
1 голос
/ 01 ноября 2019

Я пытаюсь загрузить изображения в imgur api. Возвращает ошибку 500 при попытке загрузить двоичное тело. Однако загрузка его как base64 работает нормально.

Я также пытался выполнять запросы с Бессонницей , и они работали просто отлично.

Я действительно не уверен, почемуЯ получаю 500, хотя. Это означало бы, что это конец imgurs, но я не совсем верю, что это так, поскольку он прекрасно работает в бессоннице и как base64.

Example in Insomnia

I 'Вы читали следующий пост: Как загрузить в Imgur (API v3), используя двоичный формат изображения? Но кажется, что он охватывает только Files, а не байтовые массивы.

Базовый загрузчиккласс. По сути, абстрактный класс с базовыми функциями загрузки.

//imports in case they're needed
import me.darkeyedragon.imageutils.client.ImageUtilsMain;
import org.apache.http.HttpHeaders;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.function.BiConsumer;

...

public BaseUploader(ExecutorService executorService) {
    httpClient = HttpClients.createDefault();
    params = new ArrayList<>(1);
    httpPost = new HttpPost();
    this.executorService = executorService;
    builder = MultipartEntityBuilder.create();
    httpPost.addHeader(HttpHeaders.CONTENT_TYPE, "image/png");
    httpPost.addHeader(HttpHeaders.ACCEPT, "text/html,json");
    httpPost.addHeader(HttpHeaders.USER_AGENT, ImageUtilsMain.getModId() + "/" + ImageUtilsMain.getVersion());
}


@Override
public HttpResponse upload(BufferedImage bufferedImage) throws IOException {
    final ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ImageIO.write(bufferedImage, "png", baos);
    final byte[] imageInByte = baos.toByteArray();
    baos.flush();
    baos.close();
    httpPost.setEntity(builder.addBinaryBody("image", imageInByte).build());
    //addParam("image", Base64.getEncoder().encodeToString(imageInByte));
    return httpClient.execute(httpPost);
}
...

класс загрузчика imgur:

public class ImgurUploader extends BaseUploader {

    public ImgurUploader(ImageUtilsMain main) {
        super("https://api.imgur.com/3/image", main.getUploadHandler().getFixedThreadPool());
        super.getHttpPost().addHeader(HttpHeaders.AUTHORIZATION, "Client-ID <my id>");
    }
}

Не уверен, что я делаю здесь неправильно. Я использую не тот строитель? Я забыл установить некоторые параметры заголовка?

...