当前位置: 首页>>代码示例>>C#>>正文


C# WebResponse.ShouldNotBeNull方法代码示例

本文整理汇总了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;
            }
        }
开发者ID:debop,项目名称:NFramework,代码行数:75,代码来源:HttpClient.cs


注:本文中的System.Net.WebResponse.ShouldNotBeNull方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。