gpt4 book ai didi

java - 如何将 InputStream 传递给 REST 服务 POST 方法

转载 作者:行者123 更新时间:2023-11-30 08:32:13 25 4
gpt4 key购买 nike

如何使用 Java REST 客户端将 InputStream 传递给 createParcel() 方法?如何使用 POSTMAN 调用 POST 请求?

@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.TEXT_PLAIN)
public int createParcel(InputStream is) {
int awbNo = 0;
try {
ParcelInfo parcelInfo = null;
parcelInfo = buildParcelInfo(is);
awbNo = index.incrementAndGet();
parcelInfo.setAwbNo(awbNo);
parcelInfo.setStatus("new");
parcelDataMap.put(awbNo, parcelInfo);
} catch(Exception ex) {
logger.error("Getting some exception for creating parcel : "+ex.getMessage(), ex);
}
return awbNo;
}

@GET
@Produces(MediaType.APPLICATION_XML)
public StreamingOutput getParcelInfo(@QueryParam("awbNo") int awbNo) {
ParcelInfo parcelInfo = null;
String xml = null;
parcelInfo = parcelDataMap.get(awbNo);

if (parcelInfo != null) {
xml = convert(parcelInfo);
}
return new ParcelInfoWriter(xml);
}

最佳答案

因为您不是在使用结构化数据而是在使用原始 InputStream,所以您首先要删除 @Consumes 注释;所以你的资源方法应该是:

@POST
@Produces(MediaType.TEXT_PLAIN)
public int createParcel(InputStream is) {
int awbNo = 0;
try {
ParcelInfo parcelInfo = null;
parcelInfo = buildParcelInfo(is);
// the rest of your code here
}catch(Exception ex) {
// catch specific exception instead of `Exception`
}
return awbNo;
}

现在使用 Postman 调用您的资源。您请求的内容主体可以是任何内容(在我的示例中它是 XML,但您可以发送任何您喜欢的内容)。请看下面的截图如何正确设置请求:

enter image description here

请原谅我的绘图:-)

关于java - 如何将 InputStream 传递给 REST 服务 POST 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40232569/

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