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