我正在尝试将java servlet发送的字节读入C#应用程序,到目前为止,我还没有能够使用C#中的普通流从servlet获得更多的乱码。我已经尝试了各种形式的解码,但还没有找到一种工作方式来从http源读取s#到c#应用程序。
servlet字节随
一起发送已编辑的代码
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
ServletOutputStream resp = response.getOutputStream();
try{
resp.write("test".getBytes("UTF-8"));
}
catch(Exception e){
//Do Nothing
}
C#用
读入 try
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://path.to/servlet");
req.Method = "POST";
req.ContentType = "text/html";
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
string text;
using (var reader = new StreamReader(resp.GetResponseStream()))
{
text = reader.ReadToEnd();
Console.WriteLine(text);
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
我最终得到两个问号或两个ascii符号。
有没有人知道如何将这些Java字节流式传输到C#应用程序中?
答案 0 :(得分:2)
两个问题:
您忽略了Stream.Read
的返回值;通常,您应该使用它来计算出您实际收到的数据量。但是,在这种情况下,使用StreamReader
会更好 :
string text;
// Uses UTF-8 implicitly
using (var reader = new StreamReader(httpResponse.GetResponseStream())
{
text = reader.ReadToEnd();
}
Java中字节的签名与此无关。
(另外,您为什么使用new String("test")
?您认为只使用"test"
会怎样?)