2016-10-25 61 views
0

如何將InputStream傳遞給​​使用Java REST客戶端的方法?如何使用POSTMAN調用POST請求?如何將InputStream傳遞給REST服務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); 
} 

回答

0

因爲你不消耗結構化數據,而是原始的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

Execume爲:-)繪圖

相關問題