将二进制数据上载到Java

时间:2016-05-20 14:48:45

标签: java c# servlets

感谢您对此提供的任何帮助:

我有以下C#代码:

double[] data = new double[] { 1.0, 2.0, 3.0 };

byte[] bytes = CreateByteArrayFromDoubleArray(data);

WebClient webClient = new WebClient();

byte[] byteData = webClient.UploadData(szWebEndPoint + "?double", bytes);

这将调用下面的Java servlet代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        String szDoubleUp = request.getParameter("double");

        double[] doubles = {2.5,4.5,6.5,8.5};

        if(szDoubleUp != null && szDoubleUp.equals("true"))
        {
            doubles[0] = 5.0;
        }

        byte[] bytes = new byte[doubles.length * 8];

        ByteBuffer buf = ByteBuffer.wrap(bytes);

        for (double d : doubles)
        {
            buf.putDouble(d);
        }

        response.setContentType("application/octet-stream");
        response.setContentLength(bytes.length);

        ServletOutputStream servletOutputStream = response.getOutputStream();

        servletOutputStream.write(bytes, 0, bytes.length);
        servletOutputStream.flush();
        servletOutputStream.close();
    }

}

并且,正如预期的那样,它返回C#中的数字数组,第一个数字取决于request.getParameter(“double”)的存在和值

但是,在我调用webClient.UploadData时,我转换为字节并将其设置为第二个参数的数组称为数据。如何在Java servlet中访问这些值?

我可以使用:

InputStream inputStream = request.getInputStream();

但是我怎么能读出这里的双打,我看到了

DataInputStream inputStream = request.getInputStream();
由于以下错误,

无法执行:

“类型不匹配:无法从ServletInputStream转换为DataInputStream”

所以,我的一般性问题是如何通过WebClient.UploadData读取从C#发送到Java servlet的二进制数据?

谢谢, 米奇。

1 个答案:

答案 0 :(得分:1)

DataInputStream dataIn = new DataInputStream(request.getInputStream())