您的位置:首页 > 理论基础 > 计算机网络

调用wcf 得不到HttpWebResponse.ContentLength的长度

2016-07-14 10:53 585 查看
HttpWebRequest wreq = (HttpWebRequest)WebRequest.Create(strUrl);
wreq.Timeout = _httpTimeout * 1000;
wreq.ReadWriteTimeout = _httpTimeout * 1000;
wreq.Method = "POST";
wreq.ContentType = "application/json;charset=utf-8";
wreq.ContentLength = data.Length;
using (Stream putStream = wreq.GetRequestStream())
{
putStream.Write(data, 0, data.Length);
}

var resp = wreq.GetResponse() as HttpWebResponse;
string rst = string.Empty;
using (Stream putStream = resp.GetResponseStream())
{
StreamReader sr = new StreamReader(putStream);
rst = sr.ReadToEnd();
}


--way 2,stream 转 byte[] :

byte[] by = new byte[800];
int size = 1024;
int read = 0;
using (MemoryStream ms = new MemoryStream())
{
byte[] buffer = new byte[size];
do
{
read = stream.Read(buffer, 0, size);
ms.Write(buffer, 0, read);
} while (read > 0);

by = ms.ToArray();
}


stream 转 byte[] ,这个方法也可以:

public byte[] ReadFully (Stream stream)
{
// 初始化一个32k的缓存
byte[] buffer = new byte[32768];
using (MemoryStream ms = new MemoryStream())
{ //返回结果后会自动回收调用该对象的Dispose方法释放内存
// 不停的读取
while (true)
{
int read = stream.Read(buffer, 0, buffer.Length);
// 直到读取完最后的3M数据就可以返回结果了
if (read <= 0)
return ms.ToArray();
ms.Write(buffer, 0, read);
}
}
}


--
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: