本文整理汇总了C#中System.Net.WebResponse.ShouldNotBeNull方法的典型用法代码示例。如果您正苦于以下问题:C# WebResponse.ShouldNotBeNull方法的具体用法?C# WebResponse.ShouldNotBeNull怎么用?C# WebResponse.ShouldNotBeNull使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Net.WebResponse
的用法示例。
在下文中一共展示了WebResponse.ShouldNotBeNull方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ResponseToArray
/// <summary>
/// Response 정보를 byte array로 변환한다.
/// </summary>
/// <remarks>
/// 길이가 아주 길고, 실제 크기를 알 수 없을 때 Response 개체의 stream을 처리하는 로직이 있음.
/// </remarks>
/// <param name="response"></param>
/// <returns></returns>
public static byte[] ResponseToArray(WebResponse response) {
response.ShouldNotBeNull("response");
if(IsDebugEnabled)
log.Debug("Convert content of WebResponse to byte array...");
using(var stream = response.GetResponseStream()) {
stream.ShouldNotBeNull("ResponseStream");
// 길이를 알 수 없을 때 사용한다.
var length = response.ContentLength;
if(length == 0)
return new byte[0];
var flag = false;
// 실제 크기를 알지 못할 때, 기본 크기로 계속 늘리기 위해
//
if(length == -1) {
flag = true;
length = HttpConsts.DEFAULT_BUFFER_LENGTH;
}
var buffer = new byte[(uint)(int)length];
var offset = 0;
int readCount;
while((readCount = stream.Read(buffer, offset, (int)length - offset)) > 0) {
offset += readCount;
if(flag && (offset == length)) {
length += HttpConsts.DEFAULT_BUFFER_LENGTH;
var buffer2 = new byte[(uint)(int)length];
Buffer.BlockCopy(buffer, 0, buffer2, 0, offset);
buffer = buffer2;
}
}
//do
//{
// readCount = stream.Read(buffer, offset, (int) length - offset);
// offset += readCount;
// // stream의 크기가 기본 크기보다 더 크므로 버퍼의 크기를 늘린다.
// if(flag && (offset == length))
// {
// length += HttpConsts.DEFAULT_BUFFER_LENGTH;
// var buffer2 = new byte[(uint) (int) length];
// Buffer.BlockCopy(buffer, 0, buffer2, 0, offset);
// buffer = buffer2;
// }
//} while(readCount != 0);
stream.Close();
// 실제 크기를 알 수 없으므로 남아있는 여분의 Array를 제거한다.
if(flag) {
var tmpBuffer = new byte[(uint)offset];
Buffer.BlockCopy(buffer, 0, tmpBuffer, 0, offset);
buffer = tmpBuffer;
}
return buffer;
}
}