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


C# IHttpRequest.GetRequestBody方法代码示例

本文整理汇总了C#中IHttpRequest.GetRequestBody方法的典型用法代码示例。如果您正苦于以下问题:C# IHttpRequest.GetRequestBody方法的具体用法?C# IHttpRequest.GetRequestBody怎么用?C# IHttpRequest.GetRequestBody使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在IHttpRequest的用法示例。


在下文中一共展示了IHttpRequest.GetRequestBody方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: CompareRequest

            private void CompareRequest(ExpectedClientRequest expected, IHttpRequest actual)
            {
                this.parent.Assert.AreEqual(expected.Verb, actual.Verb, "Request verb did not match");

                // The headers are quite different when using XmlHttp
                if (!this.contextData.UsesXmlHttpStack())
                {
                    this.CompareHeaders(expected.Headers, actual.Headers);
                }

                if (expected.Body == null)
                {
                    int actualLength = 0;
                    var actualBody = actual.GetRequestBody();
                    if (actualBody != null)
                    {
                        actualLength = actualBody.Length;
                    }

                    this.parent.Assert.AreEqual(0, actualLength, "Request should not have had a body");
                }
                else
                {
                    ODataPayloadElement actualPayload;
                    if (expected.Body.ElementType == ODataPayloadElementType.EntityInstance)
                    {
                        actualPayload = actual.DeserializeAndCast<EntityInstance>(this.parent.FormatSelector);
                    }
                    else if (expected.Body.ElementType == ODataPayloadElementType.DeferredLink)
                    {
                        actualPayload = actual.DeserializeAndCast<DeferredLink>(this.parent.FormatSelector);
                    }
                    else
                    {
                        ExceptionUtilities.Assert(expected.Body.ElementType == ODataPayloadElementType.PrimitiveValue, "Expected payload element was neither an entity, a link, nor a stream");
                        actualPayload = new PrimitiveValue(null, actual.GetRequestBody());
                    }

                    try
                    {
                        this.parent.PayloadComparer.Compare(expected.Body, actualPayload);
                    }
                    catch (TestFailedException e)
                    {
                        this.parent.Log.WriteLine(LogLevel.Error, "Expected client request payload did not match actual.");
                                                
                        var strategy = this.parent.FormatSelector.GetStrategy(actual.GetHeaderValueIfExists(HttpHeaders.ContentType), null);
                        var expectedBinary = strategy.GetSerializer().SerializeToBinary(expected.Body);

                        this.parent.Log.WriteLine(LogLevel.Verbose, "Expected request:");
                        var expectedToLog = new HttpRequestData() { Verb = expected.Verb, Uri = expected.Uri, Body = expectedBinary };
                        expectedToLog.Headers.AddRange(expected.Headers);
                        expectedToLog.WriteToLog(this.parent.Log, LogLevel.Verbose);

                        this.parent.Log.WriteLine(LogLevel.Verbose, "Actual request:");
                        actual.WriteToLog(this.parent.Log, LogLevel.Verbose);

                        // wrap to preserve call stack
                        throw new AssertionFailedException("Expected client request payload did not match actual.", e);
                    }
                }
            }
开发者ID:AlineGuan,项目名称:odata.net,代码行数:62,代码来源:SaveChangesHttpValidatingEmulator.cs

示例2: SendRequest

        /// <summary>
        /// Constructs an HttpWebRequest for the given information and sends it (by writing to the stream).
        /// If the server responds with certain status-codes, this method will throw due to the underlying stack's implementation.
        /// </summary>
        /// <param name="request">The request to send, should not be null, and should have an absolute Uri</param>
        /// <returns>An HttpWebRequest</returns>
        private HttpWebRequest SendRequest(IHttpRequest request)
        {
            // some sanity checks
            ExceptionUtilities.Assert(request != null, "request == null");

            Uri requestUri = request.GetRequestUri();
            ExceptionUtilities.Assert(requestUri != null, "requestUri == null");
            ExceptionUtilities.Assert(requestUri.IsAbsoluteUri, "!requestUri.IsAbsoluteUri");

            // create the request
            HttpWebRequest underlyingRequest = (HttpWebRequest)HttpWebRequest.Create(requestUri);

            if (this.AuthenticationProvider.UseDefaultCredentials)
            {
                underlyingRequest.UseDefaultCredentials = true;
            }
            else if (this.AuthenticationProvider.GetAuthenticationCredentials() != null)
            {
                underlyingRequest.Credentials = this.AuthenticationProvider.GetAuthenticationCredentials();
            }

            IDictionary<string, string> authenticationHeaders = this.AuthenticationProvider.GetAuthenticationHeaders();
            if (authenticationHeaders != null)
            {
                foreach (var header in authenticationHeaders)
                {
                    underlyingRequest.Headers[header.Key] = header.Value;
                }
            }

            // set the HTTP method
            underlyingRequest.Method = request.Verb.ToHttpMethod();

            // clear default values
            underlyingRequest.Accept = null;
            underlyingRequest.ContentType = null;

            // set the request's headers. Accept and Content-Type are special cases due to HttpWebRequest's API.
            foreach (KeyValuePair<string, string> header in request.Headers)
            {
                switch (header.Key)
                {
                    case HttpHeaders.Accept:
                        // use the special API
                        underlyingRequest.Accept = header.Value;
                        break;

                    case HttpHeaders.ContentType:
                        // use the special API, and randomize it
                        underlyingRequest.ContentType = header.Value;
                        break;

                    default:
                        underlyingRequest.Headers.Add(header.Key, header.Value);
                        break;
                }
            }

            // log request before sending
            this.Logger.WriteLine(LogLevel.Verbose, "HTTP: {0} {1} {2}", underlyingRequest.Method, underlyingRequest.RequestUri, underlyingRequest.Accept);

            // if the request is empty, explicitly set the content length to 0
            var requestBody = request.GetRequestBody();
            if (requestBody == null || requestBody.Length == 0)
            {
                underlyingRequest.ContentLength = 0;
            }
            else
            {
                // set the content length, and write all the bytes to the stream
                // note that this will cause the request to be sent to the server
                underlyingRequest.ContentLength = requestBody.Length;
                using (Stream os = underlyingRequest.GetRequestStream())
                {
                    os.Write(requestBody, 0, requestBody.Length);
                }
            }

            // return the request
            return underlyingRequest;
        }
开发者ID:AlineGuan,项目名称:odata.net,代码行数:87,代码来源:SystemNetHttpImplementation.cs


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