Я пытаюсь загрузить изображения в imgur api. Возвращает ошибку 500 при попытке загрузить двоичное тело. Однако загрузка его как base64 работает нормально.
Я также пытался выполнять запросы с Бессонницей , и они работали просто отлично.
Я действительно не уверен, почемуЯ получаю 500, хотя. Это означало бы, что это конец imgurs, но я не совсем верю, что это так, поскольку он прекрасно работает в бессоннице и как base64.
![Example in Insomnia](https://i.stack.imgur.com/OVx1O.png)
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>");
}
}
Не уверен, что я делаю здесь неправильно. Я использую не тот строитель? Я забыл установить некоторые параметры заголовка?