繁体   English   中英

在C#客户端上从流读取Java servlet字节

[英]Reading Java servlet bytes from stream on C# client

我在读取Java Servlet发送给用C#编写的客户端的字节时遇到问题。

C#代码

            HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://path.to/servlet");
            req.Method = "POST";
            req.ContentType = "text/html";

            HttpWebResponse res = (HttpWebResponse)req.GetResponse();
            Stream respStream = res.GetResponseStream();
            byte[] re = new byte[512];
            respStream.Read(re, 0, re.Length);
            MessageBox.Show(Encoding.Default.GetString(re));

Java代码

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
    ServletOutputStream resp = response.getOutputStream();
    try{
        resp.write(new String("Test String").getBytes());
    }
    catch(Exception e){
        e.printStackTrace();
    }
}

我意识到Java字节和C#字节(有符号与无符号)之间存在差异,但是我不知道如何将Java的有符号字节流式传输到C#可以识别的内容中。 有任何想法吗? 就我发送信息的方式而言,我是否需要对servlet进行一些调整,还是需要修改C#位?

最快的方法是在您的C#代码中指定编码,而不是

Encoding.Default.GetString(re)

您应该可以使用,

System.Text.Encoding.GetEncoding(1252).GetString(re)

根据Windows-1252上的Wikipedia条目,它是ISO-8859-1(Java默认字符编码)的超集。 您可以考虑在两边都明确使用UTF-8,

System.Text.Encoding.UTF8.GetString(re)

在Java中

new String("Test String").getBytes("UTF-8")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM