2

我使用以下代码作为球衣客户端将 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?

任何帮助将不胜感激。

4

0 回答 0