感谢您对此提供的任何帮助:
我有以下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的二进制数据?
谢谢, 米奇。
答案 0 :(得分:1)
DataInputStream dataIn = new DataInputStream(request.getInputStream())