【发布时间】:2023-03-30 17:49:01
【问题描述】:
我在读取 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# 位?
【问题讨论】:
-
您是否有特殊原因要使用底层字节,而不是使用 UTF-8(或 UTF-16)编码的文本?我建议你看看
ServletResponse.getWriter()(ServletResponse.flushBuffer()也可能是个好主意)。 -
@ElliottFrisch 尝试了 getWriter() 选项,并收到了相同的字符,我也尝试使用 TextReader,在编写器在 servlet 中使用后,结果相同。我应该在 C# 代码中做些什么不同的事情来让我更好地阅读 java printwriter 的响应?