减少运动衫的数据传输大小

时间:2012-11-17 01:58:19

标签: jersey

我使用以下代码作为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?

非常感谢任何帮助。

0 个答案:

没有答案