gpt4 book ai didi

java - 创建 JAX-RS 提供程序以从 InputStream 创建 Java Image

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:01:45 32 4
gpt4 key购买 nike

我正在尝试创建一个 image/jpeg jax-rs 提供程序类,它为我的基于 post rest 的 Web 服务创建一个图像。我无法制定请求来测试以下内容,最简单的测试方法是什么?

 @POST
@Path("/upload")
@Consumes("image/jpeg")
public Response createImage(Image image)
{
image.toString(); //temp code here just to see if service gets hit
return null;
}

import java.awt.Image;
import java.io.IOException;
import java.io.InputStream;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import javax.imageio.ImageIO;
import javax.ws.rs.Consumes;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.ext.MessageBodyReader;
import javax.ws.rs.ext.Provider;
import org.springframework.stereotype.Component;


@Provider
@Consumes("image/jpeg")
@Component("ImageProvider") //spring way to register resource
class ImageProvider implements MessageBodyReader<Image> {

public Image readFrom(Class<Image> type,
Type genericType,
Annotation[] annotations,
MediaType mediaType,
MultivaluedMap<String, String> httpHeaders,
InputStream entityStream) throws IOException,
WebApplicationException {
Image originalImage = ImageIO.read(entityStream);
return originalImage;
}

public boolean isReadable(Class<?> arg0, Type arg1, Annotation[] arg2, MediaType arg3) {
throw new UnsupportedOperationException("Not supported yet.");
}
}

最佳答案

如果您的提供商也实现了 MessageBodyWriter,您可以使用客户端库(例如 Wink Client)并使用相同的提供商发送图像:

使用 Wink 的示例代码:

ClientConfig config = new ClientConfig();
Application application = // create application that contains ImageProvider
config.applications(application);
RestClient restClient = new RestClient(config);
URI uri = // uri to server
Image image = // create image
restClient.resource(uri).contentType("image/jpeg").post(image);

顺便说一句,您的提供程序中有一个错误:您必须实现 isReadable 方法,这样它将为正确的媒体类型和类返回 true

关于java - 创建 JAX-RS 提供程序以从 InputStream 创建 Java Image,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5809117/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com