我使用以下代码作为jersey客户端将InputStream对象发送到服务器:
public static boolean assignDATask(Map<String,Future<InputStream>> daInitTaskResponseMap, String daId, String campaignId, List<Map> contList, Map campInfoBean, List<Map> campLinkBeanList, List<Map> timetableList, InputStream zippedAttachmentsStream, Map daTaskInfoBean, Map accountInfoBean){
AsyncWebResource asr = daWebResourceMap.get(daId);
if (asr!=null) {
try {
Integer readTimeoutValue = daReadTimeoutMap.get(daId).getDataAsInteger("assignBatch", DA_READ_TIMEOUT_ASSIGNBATCH_DEFAULT);
asr.setProperty(ClientConfig.PROPERTY_READ_TIMEOUT, readTimeoutValue);
FormDataMultiPart part = new FormDataMultiPart();
part.field("crmId", crmId, MediaType.APPLICATION_XML_TYPE);
part.field("campaignId", campaignId, MediaType.APPLICATION_XML_TYPE);
if (contList!=null)
part.field("contList", Util.zipDATransferParams(contList), MediaType.APPLICATION_XML_TYPE);
if (campInfoBean!=null)
part.field("campInfoBean", Util.zipDATransferParams(campInfoBean), MediaType.APPLICATION_XML_TYPE);
if (campLinkBeanList!=null)
part.field("campLinkBeanList", Util.zipDATransferParams(campLinkBeanList), MediaType.APPLICATION_XML_TYPE);
if (timetableList!=null)
part.field("timetableList", Util.zipDATransferParams(timetableList), MediaType.APPLICATION_XML_TYPE);
if (zippedAttachmentsStream!=null)
part.field("zippedAttachmentsStream", zippedAttachmentsStream, MediaType.APPLICATION_XML_TYPE);
part.field("daTaskInfoBean", Util.zipDATransferParams(daTaskInfoBean), MediaType.APPLICATION_XML_TYPE);
if (accountInfoBean!=null)
part.field("accountInfoBean", Util.zipDATransferParams(accountInfoBean), MediaType.APPLICATION_XML_TYPE);
logger.debug("part size: "+SizeOf.deepSizeOf(part));
Future<InputStream> assignDATaskResult = asr.path("initDASendECampTask").type(MediaType.MULTIPART_FORM_DATA_TYPE).post(InputStream.class, part);
logger.debug("assignDATaskResult size: "+SizeOf.deepSizeOf(assignDATaskResult));
daInitTaskResponseMap.put(daId,assignDATaskResult);
logger.debug("-----------------------------Current Time Sender: "+System.currentTimeMillis());
} catch (IOException ioe) {
logger.debug("Fail to zip the parameters", ioe);
return false;
}
} else {
logger.debug("DA not exist, DA ID: "+ daId);
return true;
}
return true;
}
FormDataMultiPart是72个字节。但响应对象(assignDATaskResult)大约为26 MB。 我知道assignDATaskResult也包含在ServletContext中。
然后我想知道如何测量我通过球衣发送的物体的大小?
统计数据为我提供了高流量的网络流量,在2小时的数据传输过程中,它大约为80 kB / s(640 kbps)。
还有什么方法可以减少流量?..也许可以将其转换为JSON?
非常感谢任何帮助。