将二进制数据上载到Java

将二进制数据上载到Java,java,c#,servlets,Java,C#,Servlets,感谢您在这方面的帮助: 我有以下C#代码: 这将调用下面的Java servlet代码: protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String szDoubleUp = request.getParameter("double"); double[] doubl

感谢您在这方面的帮助:

我有以下C#代码:

这将调用下面的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”)的存在和值

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

我可以使用:

InputStream inputStream = request.getInputStream();
但是我怎么能从这里读出双打呢,我明白了

DataInputStream inputStream = request.getInputStream();
由于以下错误,无法执行此操作:

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

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

谢谢, 米奇

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