簡體   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