我遇到了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#字节(signed vs unsigned)之间存在差异,但我不知道如何将java的签名字节流式传输到c#可识别的字节中。有任何想法吗?我是否需要在servlet上调整一些信息,或者需要修改C#位?
答案 0 :(得分:0)
最快的事情是在C#代码中指定编码,而不是
Encoding.Default.GetString(re)
你应该可以使用,
System.Text.Encoding.GetEncoding(1252).GetString(re)
根据Windows-1252上的维基百科条目,它是ISO-8859-1(Java默认字符编码)的超集。您可以考虑在两端明确使用UTF-8,
System.Text.Encoding.UTF8.GetString(re)
和Java,
new String("Test String").getBytes("UTF-8")