簡體   English   中英

如何將 InputStream 傳遞給 REST 服務 POST 方法

[英]How to pass InputStream to REST service POST method

如何使用 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,但您可以發送任何您喜歡的內容)。 看下面的截圖如何正確設置請求:

在此處輸入圖片說明

執行我的繪圖:-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM