我使用Webclient.UploadData将内容上传到网站。
data ="GetCourses('all')"; //this will return all the courses in the course table.
WebClient wb= new WebClient();
try
{
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(data);
byte[] results = wb.UploadData(url, "POST", bytes);
var returnResult = System.Text.Encoding.ASCII.GetString(results);
}
catch (Exception ex)
{
ex.ToString()
}
我正在尝试获取另一方面上面发送的数据。我希望看到" GetCourses(' all')",但它显示为null("")。
var requestData = Request.InputStream;
int length = Convert.ToInt32(requestData.Length);
byte[] strArr = new byte[length];
var strRead = requestData.Read(strArr, 0, length);
string content = string.Empty;
for (int i = 0; i < length; i++)
{
content = content + strArr[i].ToString();
}
我在这里做错了什么?
答案 0 :(得分:1)
var requestData = Request.InputStream;
string str;
using (var ms = new MemoryStream())
{
requestData.CopyTo(ms);
str = Encoding.UTF8.GetString(ms.ToArray);
}
或者更聪明的人建议,您可以使用StreamReader.ReadToEnd
:
var streamReader = new StreamReader(Request.InputStream);
var outputString = streamReader.ReadToEnd();
答案 1 :(得分:1)
首先在:
int length = Convert.ToInt32(requestData.Length)
我认为您会发现requestData.Length
已经是int
:转换它只会让代码混乱。
但你真正的问题在于解码你的字节流。 byte.ToString()
会将byte
值视为数字,而不是字符。
使用
content = Encoding.UTF8.GetString(strArray)
将UTF-8数据解码为.NET字符串。 (注意,如果内容很长,有很多方法可以逐步执行此操作,但对于不值得付出努力的简短内容。)
另请注意L.B对Q的评论:您也可以使用StreamReader
(但我会明确说明编码。)