[英]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.