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


C# ODataMessageWriter.CreateODataBatchWriter方法代码示例

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


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

示例1: WriteMessageAsync_NullResponse_Throws

        public void WriteMessageAsync_NullResponse_Throws()
        {
            HttpContent content = new StringContent(String.Empty, Encoding.UTF8, "multipart/mixed");
            content.Headers.ContentType.Parameters.Add(new NameValueHeaderValue("boundary", Guid.NewGuid().ToString()));
            IODataResponseMessage odataResponse = new ODataMessageWrapper(new MemoryStream(), content.Headers);
            ODataMessageWriter messageWriter = new ODataMessageWriter(odataResponse);

            Assert.ThrowsArgumentNull(
                () => ODataBatchResponseItem.WriteMessageAsync(messageWriter.CreateODataBatchWriter(), null).Wait(),
                "response");
        }
开发者ID:brianly,项目名称:aspnetwebstack,代码行数:11,代码来源:ODataBatchResponseItemTest.cs

示例2: StartBatchAsync

#pragma warning disable 1998
        public override async Task StartBatchAsync()
        {
            _requestMessage = new ODataRequestMessage() { Url = _session.Settings.BaseUri };
            _messageWriter = new ODataMessageWriter(_requestMessage);
#if SILVERLIGHT
            _batchWriter = _messageWriter.CreateODataBatchWriter();
            _batchWriter.WriteStartBatch();
#else
            _batchWriter = await _messageWriter.CreateODataBatchWriterAsync();
            await _batchWriter.WriteStartBatchAsync();
#endif
        }
开发者ID:tschnittgen,项目名称:Simple.OData.Client,代码行数:13,代码来源:BatchWriter.cs

示例3: ClientWriteAsyncBatchRequest

        private byte[] ClientWriteAsyncBatchRequest()
        {
            var stream = new MemoryStream();

            IODataRequestMessage requestMessage = new InMemoryMessage { Stream = stream };
            requestMessage.SetHeader("Content-Type", batchContentType);

            using (var messageWriter = new ODataMessageWriter(requestMessage))
            {
                var batchWriter = messageWriter.CreateODataBatchWriter();

                batchWriter.WriteStartBatch();

                // Write a query operation.
                var queryOperationMessage = batchWriter.CreateOperationRequestMessage("GET", new Uri(serviceDocumentUri + "/Customers('ALFKI')"), /*contentId*/ null);

                // Write a changeset with multi update operation.
                batchWriter.WriteStartChangeset();

                // Create a creation operation in the changeset.
                var updateOperationMessage = batchWriter.CreateOperationRequestMessage("POST", new Uri(serviceDocumentUri + "/Customers"), "1");

                // Use a new message writer to write the body of this operation.
                using (var operationMessageWriter = new ODataMessageWriter(updateOperationMessage))
                {
                    var entryWriter = operationMessageWriter.CreateODataEntryWriter();
                    var entry = new ODataEntry() { TypeName = "MyNS.Customer", Properties = new[] { new ODataProperty() { Name = "Id", Value = "AFKIL" }, new ODataProperty() { Name = "Name", Value = "Bob" } } };
                    entryWriter.WriteStart(entry);
                    entryWriter.WriteEnd();
                }

                updateOperationMessage = batchWriter.CreateOperationRequestMessage("PATCH", new Uri(serviceDocumentUri + "/Customers('ALFKI')"), "2");

                using (var operationMessageWriter = new ODataMessageWriter(updateOperationMessage))
                {
                    var entryWriter = operationMessageWriter.CreateODataEntryWriter();
                    var entry = new ODataEntry() { TypeName = "MyNS.Customer", Properties = new[] { new ODataProperty() { Name = "Name", Value = "Jack" } } };
                    entryWriter.WriteStart(entry);
                    entryWriter.WriteEnd();
                }

                batchWriter.WriteEndChangeset();

                // Write a query operation.
                batchWriter.CreateOperationRequestMessage("GET", new Uri(serviceDocumentUri + "/Products"), /*contentId*/ null);

                batchWriter.WriteEndBatch();

                stream.Position = 0;
                return stream.ToArray();
            }
        }
开发者ID:rossjempson,项目名称:odata.net,代码行数:52,代码来源:AsyncBatchRoundtripJsonLightTests.cs

示例4: SerializeToStreamAsync

        /// <inheritdoc/>
        protected override async Task SerializeToStreamAsync(Stream stream, TransportContext context)
        {
            IODataResponseMessage responseMessage = new ODataMessageWrapper(stream, Headers);
            ODataMessageWriter messageWriter = new ODataMessageWriter(responseMessage, _writerSettings);
            ODataBatchWriter writer = messageWriter.CreateODataBatchWriter();

            writer.WriteStartBatch();

            foreach (ODataBatchResponseItem response in Responses)
            {
                await response.WriteResponseAsync(writer, CancellationToken.None);
            }

            writer.WriteEndBatch();
        }
开发者ID:ZhaoYngTest01,项目名称:WebApi,代码行数:16,代码来源:ODataBatchContent.cs

示例5: WriteResponseAsync_WritesOperation

        public void WriteResponseAsync_WritesOperation()
        {
            OperationResponseItem responseItem = new OperationResponseItem(new HttpResponseMessage(HttpStatusCode.Accepted));
            MemoryStream memoryStream = new MemoryStream();
            IODataResponseMessage responseMessage = new ODataMessageWrapper(memoryStream);
            ODataMessageWriter writer = new ODataMessageWriter(responseMessage);
            ODataBatchWriter batchWriter = writer.CreateODataBatchWriter();
            batchWriter.WriteStartBatch();

            responseItem.WriteResponseAsync(batchWriter, CancellationToken.None).Wait();

            batchWriter.WriteEndBatch();
            memoryStream.Position = 0;
            string responseString = new StreamReader(memoryStream).ReadToEnd();

            Assert.Contains("Accepted", responseString);
        }
开发者ID:ZhaoYngTest01,项目名称:WebApi,代码行数:17,代码来源:OperationResponseItemTest.cs

示例6: UpdateDataToOData

        public string UpdateDataToOData(Change[] changes, string tableName, string[] headers)
        {
            HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Post, new Uri(this.odataEndpointURL, "$batch"));
            requestMessage.Headers.Add("DataServiceVersion", this.odataVersion);
            requestMessage.Headers.Add("MaxDataServiceVersion", this.odataMaxVersion);
            
            var setting = new ODataMessageWriterSettings();
            setting.SetContentType(ODataFormat.Batch);
            setting.BaseUri = this.odataEndpointURL;

            var odataHttpRequest = new ODataHttpRequest(requestMessage);
            var messageWriter = new ODataMessageWriter(odataHttpRequest, setting, this.metadata);

            var batchWriter = messageWriter.CreateODataBatchWriter();
            batchWriter.WriteStartBatch();
            
            for (int i = 0; i < changes.Length; i++)
            {
                batchWriter.WriteStartChangeset();
                if (changes[i].operation == "DELETE")
                {
                    createDeleteOperationRequestMessage(ref batchWriter, changes[i], tableName);
                }

                if (changes[i].operation == "UPDATE")
                {
                    createUpdateOperationRequestMessage(ref batchWriter, changes[i], tableName, headers);
                }
                batchWriter.WriteEndChangeset();
            }
            
            batchWriter.WriteEndBatch();
            batchWriter.Flush();
            odataHttpRequest.GetStream().Seek(0, SeekOrigin.Begin);

            HttpResponseMessage result = new HttpResponseMessage();

            using (HttpClient client = new HttpClient())
            {
                result = client.SendAsync(requestMessage).Result;
            }

            return parseResponseMessage(result);
        }
开发者ID:modulexcite,项目名称:Office-Add-in-Commands-Samples,代码行数:44,代码来源:ODataHelper.cs

示例7: WriteResponseAsync_WritesChangeSet

        public void WriteResponseAsync_WritesChangeSet()
        {
            HttpResponseMessage[] responses = new HttpResponseMessage[]
                {
                    new HttpResponseMessage(HttpStatusCode.Accepted),
                    new HttpResponseMessage(HttpStatusCode.NoContent)
                };
            ChangeSetResponseItem responseItem = new ChangeSetResponseItem(responses);
            MemoryStream memoryStream = new MemoryStream();
            IODataResponseMessage responseMessage = new ODataMessageWrapper(memoryStream);
            ODataMessageWriter writer = new ODataMessageWriter(responseMessage);
            ODataBatchWriter batchWriter = writer.CreateODataBatchWriter();
            batchWriter.WriteStartBatch();

            responseItem.WriteResponseAsync(batchWriter, CancellationToken.None).Wait();

            batchWriter.WriteEndBatch();
            memoryStream.Position = 0;
            string responseString = new StreamReader(memoryStream).ReadToEnd();

            Assert.Contains("changesetresponse", responseString);
            Assert.Contains("Accepted", responseString);
            Assert.Contains("No Content", responseString);
        }
开发者ID:ZhaoYngTest01,项目名称:WebApi,代码行数:24,代码来源:ChangeSetResponseItemTest.cs

示例8: BuildRequestForTableBatchOperation

        internal static Tuple<HttpWebRequest, Stream> BuildRequestForTableBatchOperation(Uri uri, UriQueryBuilder builder, IBufferManager bufferManager, int? timeout, string tableName, TableBatchOperation batch, bool useVersionHeader, OperationContext ctx, TableRequestOptions options, string accountName)
        {
            HttpWebRequest msg = BuildRequestCore(NavigationHelper.AppendPathToSingleUri(uri, "$batch"), builder, "POST", timeout, useVersionHeader, ctx);
            TablePayloadFormat payloadFormat = options.PayloadFormat.Value;
            Logger.LogInformational(ctx, SR.PayloadFormat, payloadFormat);

            // create the writer, indent for readability of the examples.  
            ODataMessageWriterSettings writerSettings = new ODataMessageWriterSettings()
            {
                CheckCharacters = false,   // sets this flag on the XmlWriter for ATOM  
                Version = TableConstants.ODataProtocolVersion // set the Odata version to use when writing the entry 
            };

            HttpWebRequestAdapterMessage adapterMsg = new HttpWebRequestAdapterMessage(msg, bufferManager);

            ODataMessageWriter odataWriter = new ODataMessageWriter(adapterMsg, writerSettings);

            ODataBatchWriter batchWriter = odataWriter.CreateODataBatchWriter();
            batchWriter.WriteStartBatch();

            bool isQuery = batch.Count == 1 && batch[0].OperationType == TableOperationType.Retrieve;

            // Query operations should not be inside changeset in payload
            if (!isQuery)
            {
                // Start Operation
                batchWriter.WriteStartChangeset();
                batchWriter.Flush();
            }

            foreach (TableOperation operation in batch)
            {
                string httpMethod = operation.HttpMethod;
                if (operation.OperationType == TableOperationType.Merge || operation.OperationType == TableOperationType.InsertOrMerge)
                {
                    options.AssertNoEncryptionPolicyOrStrictMode();
                    httpMethod = "MERGE";
                }

                ODataBatchOperationRequestMessage mimePartMsg = batchWriter.CreateOperationRequestMessage(httpMethod, operation.GenerateRequestURI(uri, tableName));
                SetAcceptAndContentTypeForODataBatchMessage(mimePartMsg, payloadFormat);

                // etag
                if (operation.OperationType == TableOperationType.Delete ||
                    operation.OperationType == TableOperationType.Replace ||
                    operation.OperationType == TableOperationType.Merge)
                {
                    mimePartMsg.SetHeader("If-Match", operation.Entity.ETag);
                }

                // Prefer header
                if (operation.OperationType == TableOperationType.Insert)
                {
                    mimePartMsg.SetHeader("Prefer", operation.EchoContent ? "return-content" : "return-no-content");
                }
                
                if (operation.OperationType != TableOperationType.Delete && operation.OperationType != TableOperationType.Retrieve)
                {
                    using (ODataMessageWriter batchEntryWriter = new ODataMessageWriter(mimePartMsg, writerSettings, new TableStorageModel(accountName)))
                    {
                        // Write entity
                        ODataWriter entryWriter = batchEntryWriter.CreateODataEntryWriter();
                        WriteOdataEntity(operation.Entity, operation.OperationType, ctx, entryWriter, options);
                    }
                }
            }

            if (!isQuery)
            {
                // End Operation
                batchWriter.WriteEndChangeset();
            }

            // End Batch
            batchWriter.WriteEndBatch();
            batchWriter.Flush();

            return new Tuple<HttpWebRequest, Stream>(adapterMsg.GetPopulatedMessage(), adapterMsg.GetStream());
        }
开发者ID:renlesterdg,项目名称:azure-storage-net,代码行数:79,代码来源:TableOperationHttpRequestFactory.cs

示例9: BuildRequestForTableBatchOperation

        internal static Tuple<HttpWebRequest, Stream> BuildRequestForTableBatchOperation(Uri uri, UriQueryBuilder builder, int? timeout, Uri baseUri, string tableName, TableBatchOperation batch, OperationContext ctx)
        {
            HttpWebRequest msg = BuildRequestCore(NavigationHelper.AppendPathToUri(uri, "$batch"), builder, "POST", timeout, ctx);

            // create the writer, indent for readability of the examples.  
            ODataMessageWriterSettings writerSettings = new ODataMessageWriterSettings()
            {
                CheckCharacters = false,   // sets this flag on the XmlWriter for ATOM  
                Version = ODataVersion.V2 // set the Odata version to use when writing the entry 
            };

            HttpWebRequestAdapterMessage adapterMsg = new HttpWebRequestAdapterMessage(msg);

            // Start Batch
            ODataMessageWriter odataWriter = new ODataMessageWriter(adapterMsg, writerSettings);
            ODataBatchWriter batchWriter = odataWriter.CreateODataBatchWriter();
            batchWriter.WriteStartBatch();

            bool isQuery = batch.Count == 1 && batch[0].OperationType == TableOperationType.Retrieve;

            // Query operations should not be inside changeset in payload
            if (!isQuery)
            {
                // Start Operation
                batchWriter.WriteStartChangeset();
                batchWriter.Flush();
            }

            foreach (TableOperation operation in batch)
            {
                string httpMethod = operation.OperationType == TableOperationType.Merge || operation.OperationType == TableOperationType.InsertOrMerge ? "MERGE" : operation.HttpMethod;

                ODataBatchOperationRequestMessage mimePartMsg = batchWriter.CreateOperationRequestMessage(httpMethod, operation.GenerateRequestURI(baseUri, tableName));

                // etag
                if (operation.OperationType == TableOperationType.Delete ||
                    operation.OperationType == TableOperationType.Replace ||
                    operation.OperationType == TableOperationType.Merge)
                {
                    mimePartMsg.SetHeader("If-Match", operation.Entity.ETag);
                }

                if (operation.OperationType != TableOperationType.Delete && operation.OperationType != TableOperationType.Retrieve)
                {
                    using (ODataMessageWriter batchEntryWriter = new ODataMessageWriter(mimePartMsg, writerSettings))
                    {
                        // Write entity
                        ODataWriter entryWriter = batchEntryWriter.CreateODataEntryWriter();
                        WriteOdataEntity(operation.Entity, operation.OperationType, ctx, entryWriter);
                    }
                }
            }

            if (!isQuery)
            {
                // End Operation
                batchWriter.WriteEndChangeset();
            }

            // End Batch
            batchWriter.WriteEndBatch();
            batchWriter.Flush();

            return new Tuple<HttpWebRequest, Stream>(adapterMsg.GetPopulatedMessage(), adapterMsg.GetStream());
        }
开发者ID:Juliako,项目名称:azure-sdk-for-net,代码行数:65,代码来源:TableOperationHttpRequestFactory.cs

示例10: ServiceReadAsyncBatchRequestAndWriteAsyncResponse

        private byte[] ServiceReadAsyncBatchRequestAndWriteAsyncResponse(byte[] requestPayload)
        {
            IODataRequestMessage requestMessage = new InMemoryMessage() { Stream = new MemoryStream(requestPayload) };
            requestMessage.SetHeader("Content-Type", batchContentType);

            using (var messageReader = new ODataMessageReader(requestMessage, new ODataMessageReaderSettings(), this.userModel))
            {
                var responseStream = new MemoryStream();

                IODataResponseMessage responseMessage = new InMemoryMessage { Stream = responseStream };
                responseMessage.SetHeader("Content-Type", batchContentType);
                var messageWriter = new ODataMessageWriter(responseMessage);
                var batchWriter = messageWriter.CreateODataBatchWriter();
                batchWriter.WriteStartBatch();

                var batchReader = messageReader.CreateODataBatchReader();
                while (batchReader.Read())
                {
                    switch (batchReader.State)
                    {
                        case ODataBatchReaderState.Operation:
                            // Encountered an operation (either top-level or in a changeset)
                            var operationMessage = batchReader.CreateOperationRequestMessage();
                            if (operationMessage.Method == "GET" && operationMessage.Url.AbsolutePath.Contains("ALFKI"))
                            {
                                var response = batchWriter.CreateOperationResponseMessage(null);
                                response.StatusCode = 200;
                                response.SetHeader("Content-Type", "application/json;");
                                var settings = new ODataMessageWriterSettings();
                                settings.SetServiceDocumentUri(new Uri(serviceDocumentUri));
                                using (var operationMessageWriter = new ODataMessageWriter(response, settings, this.userModel))
                                {
                                    var entryWriter = operationMessageWriter.CreateODataEntryWriter(this.customers, this.customerType);
                                    var entry = new ODataEntry() { TypeName = "MyNS.Customer", Properties = new[] { new ODataProperty() { Name = "Id", Value = "ALFKI" }, new ODataProperty() { Name = "Name", Value = "John" } } };
                                    entryWriter.WriteStart(entry);
                                    entryWriter.WriteEnd();
                                }
                            }
                            break;
                    }
                }

                var asyncResponse = batchWriter.CreateOperationResponseMessage(null);
                asyncResponse.StatusCode = 202;
                asyncResponse.SetHeader("Location", "http://service/async-monitor");
                asyncResponse.SetHeader("Retry-After", "10");

                batchWriter.WriteEndBatch();

                responseStream.Position = 0;
                return responseStream.ToArray();
            }
        }
开发者ID:rossjempson,项目名称:odata.net,代码行数:53,代码来源:AsyncBatchRoundtripJsonLightTests.cs

示例11: Button2_Click

            protected void Button2_Click(object sender, EventArgs e)
        {
            string accessToken = ((Button)sender).CommandArgument;
            Int16 listRetrievalCount = 0;

            if (IsPostBack)
            {
                // Get the host web's URL.
                sharepointUrl = new Uri(Request.QueryString["SPHostUrl"]);
            }
            
            // Create the parent request
            var batchRequest = new BatchODataRequest(String.Format("{0}/_api/", sharepointUrl)); // ctor adds "$batch"
            batchRequest.SetHeader("Authorization", "Bearer " + accessToken);
            
            using (var oDataMessageWriter = new ODataMessageWriter(batchRequest))
            {
                var oDataBatchWriter = oDataMessageWriter.CreateODataBatchWriter();
                oDataBatchWriter.WriteStartBatch();

               // Create the two child query operations.
               oDataBatchWriter.CreateOperationRequestMessage(
                    "GET", new Uri(sharepointUrl.ToString() + "/_api/Web/lists/getbytitle('Composed Looks')/items?$select=Title"));
                listRetrievalCount++;

                oDataBatchWriter.CreateOperationRequestMessage(
                   "GET", new Uri(sharepointUrl.ToString() + "/_api/Web/lists/getbytitle('User Information List')/items?$select=Title"));
                listRetrievalCount++;
                
                oDataBatchWriter.WriteEndBatch();
                oDataBatchWriter.Flush();
            }

            // Parse the response and bind the data to the UI controls
            var oDataResponse = batchRequest.GetResponse();

            using (var oDataReader = new ODataMessageReader(oDataResponse))
            {
                var oDataBatchReader = oDataReader.CreateODataBatchReader();

                while (oDataBatchReader.Read())
                {
                    switch (oDataBatchReader.State)
                    {
                        case ODataBatchReaderState.Initial:

                            // Optionally, handle the start of a batch payload.
                            break;
                        case ODataBatchReaderState.Operation:

                            // Start of an operation (either top-level or in a changeset)
                            var operationResponse = oDataBatchReader.CreateOperationResponseMessage();

                            // Response's ATOM markup parsing and presentation section
                            using (var stream = operationResponse.GetStream())
                            {
                                List<XElement> entries = SharePointDataHelpers.ListDataHelper.ExtractListItemsFromATOMResponse(stream);

                                var itemTitles = SharePointDataHelpers.ListDataHelper.GetItemTitles(entries);

                                // Bind data to the grid on the page.
                                   // In a production app, check operationResponse.StatusCode and handle non-200 statuses.
                                   // For simplicity, this sample assumes status 200 (the list items are returned).
                                switch (listRetrievalCount)
                                {
                                    case 2:
                                        GridView2.DataSource = itemTitles;
                                        GridView2.DataBind();
                                        listRetrievalCount--;
                                        break;

                                    case 1:
                                        GridView1.DataSource = itemTitles;
                                        GridView1.DataBind();
                                        listRetrievalCount--;
                                        break;
                                }
                            };
                            break;
                        case ODataBatchReaderState.ChangesetStart:
                            // Optionally, handle the start of a change set.
                            break;

                        case ODataBatchReaderState.ChangesetEnd:
                            // When this sample was created, SharePoint did not support "all or nothing" transactions. 
                            // If that changes in the future this is where you would commit the transaction.
                            break;

                        case ODataBatchReaderState.Exception:
                            // In a producition app handle exeception. Omitted for simplicity in this sample app.
                            break;
                    }
                }                
            }
            TwoLists.Visible = true;
        }
开发者ID:CherifSy,项目名称:PnP,代码行数:96,代码来源:Default.aspx.cs

示例12: Button4_Click

        protected void Button4_Click(object sender, EventArgs e)
        {
            string accessToken = ((Button)sender).CommandArgument;
            Int16 operationCount = 0;

            if (IsPostBack)
            {
                // Get the host web's URL.
                sharepointUrl = new Uri(Request.QueryString["SPHostUrl"]);
            }

            // Create the parent request
            var batchRequest = new BatchODataRequest(String.Format("{0}/_api/", sharepointUrl)); // ctor adds "$batch"
            batchRequest.SetHeader("Authorization", "Bearer " + accessToken);

            using (var oDataMessageWriter = new ODataMessageWriter(batchRequest))
            {
                var oDataBatchWriter = oDataMessageWriter.CreateODataBatchWriter();
                oDataBatchWriter.WriteStartBatch();

                oDataBatchWriter.WriteStartChangeset();

                // Create the list deleting operation
                var deleteOperation = oDataBatchWriter.CreateOperationRequestMessage(
                    "DELETE", new Uri(sharepointUrl.ToString() + "/_api/Web/lists/getbytitle(\'" +OldList.Text+ "\')"));
                deleteOperation.SetHeader("If-Match", "\"1\"");

                oDataBatchWriter.WriteEndChangeset();
                operationCount++;

                // Create the query operation
                var queryOperationMessage3 = oDataBatchWriter.CreateOperationRequestMessage(
                    "GET", new Uri(sharepointUrl.ToString() + "/_api/Web/lists"));
                operationCount++;

                oDataBatchWriter.WriteEndBatch();
                oDataBatchWriter.Flush();
            }

            // Parse the response and bind the data to the UI controls
            var oDataResponse = batchRequest.GetResponse();

            using (var oDataReader = new ODataMessageReader(oDataResponse))
            {
                var oDataBatchReader = oDataReader.CreateODataBatchReader();

                while (oDataBatchReader.Read())
                {
                    switch (oDataBatchReader.State)
                    {
                        case ODataBatchReaderState.Initial:
                            // Optionally, handle the start of a batch payload.
                            break;

                        case ODataBatchReaderState.Operation:
                            // Encountered an operation (either top-level or in a changeset)
                            var operationResponse = oDataBatchReader.CreateOperationResponseMessage();

                            // Response ATOM markup parsing and presentation
                            using (var stream = operationResponse.GetStream())
                            {

                                switch (operationCount)
                                {
                                    case 2: // The "delete list" operation

                                        if (operationResponse.StatusCode == 200)
                                        {
                                            DeleteListResponse.Text = "Your list was deleted!";
                                        }
                                        else
                                        {
                                            DeleteListResponse.Text = "Your list was not deleted. Status returned: " + operationResponse.StatusCode.ToString();
                                        }

                                        operationCount--;
                                        break;

                                    case 1: // The "List of Lists" operation

                                        // Bind data to the grid on the page.
                                           // In a production app, check operationResponse.StatusCode and handle non-200 statuses.
                                           // For simplicity, this sample assumes status 200 (the list items are returned).
                                        List<XElement> entries = SharePointDataHelpers.ListDataHelper.ExtractListItemsFromATOMResponse(stream);
                                        var itemTitles = SharePointDataHelpers.ListDataHelper.GetItemTitles(entries);
                                        GridView4.DataSource = itemTitles;
                                        GridView4.DataBind();
                                        operationCount--;
                                        break;
                                }
                            };
                            break;

                        case ODataBatchReaderState.ChangesetStart:
                            // Optionally, handle the start of a change set.
                            break;

                        case ODataBatchReaderState.ChangesetEnd:
                            // When this sample was created, SharePoint did not support "all or nothing" transactions. 
                            // If that changes in the future this is where you would commit the transaction.
//.........这里部分代码省略.........
开发者ID:CherifSy,项目名称:PnP,代码行数:101,代码来源:Default.aspx.cs

示例13: Button3_Click

        protected void Button3_Click(object sender, EventArgs e)
        {
            string accessToken = ((Button)sender).CommandArgument;
            Int16 operationCount = 0;

            if (IsPostBack)
            {
                // Get the host web's URL.
                sharepointUrl = new Uri(Request.QueryString["SPHostUrl"]);
            }

            // Create the parent request
            var batchRequest = new BatchODataRequest(String.Format("{0}/_api/", sharepointUrl)); // ctor adds "$batch"
            batchRequest.SetHeader("Authorization", "Bearer " + accessToken);

            using (var oDataMessageWriter = new ODataMessageWriter(batchRequest))
            {
                var oDataBatchWriter = oDataMessageWriter.CreateODataBatchWriter();
                oDataBatchWriter.WriteStartBatch();

                oDataBatchWriter.WriteStartChangeset();

                // Create the list adding operation
                var addListOperation = oDataBatchWriter.CreateOperationRequestMessage(
                    "POST", new Uri(sharepointUrl.ToString() + "/_api/lists"));
                addListOperation.SetHeader("Content-Type", "application/json;odata=verbose");

                // Write the body of the operation
                using (var oDataInsertWriter = new ODataMessageWriter(addListOperation))
                {
                    var entryWriter = oDataInsertWriter.CreateODataEntryWriter();

                    var insertionBody = new ODataEntry()
                    {
                        Properties = new[]
                            {
                                new ODataProperty() {Name = "Title", Value = NewList.Text},
                                new ODataProperty() {Name = "BaseTemplate", Value = "100"}
                            }
                    };

                    // Set the "__metadata" type property
                    insertionBody.TypeName = "SP.List";

                    entryWriter.WriteStart(insertionBody);
                    entryWriter.WriteEnd();
                }
                oDataBatchWriter.WriteEndChangeset();
                operationCount++;

                // Create the query operation
                var queryOperationMessage3 = oDataBatchWriter.CreateOperationRequestMessage(
                    "GET", new Uri(sharepointUrl.ToString() + "/_api/Web/lists"));
                operationCount++;

                oDataBatchWriter.WriteEndBatch();
                oDataBatchWriter.Flush();
            }

            // Parse the response and bind the data to the UI controls
            var oDataResponse = batchRequest.GetResponse();

            using (var oDataReader = new ODataMessageReader(oDataResponse))
            {
                var oDataBatchReader = oDataReader.CreateODataBatchReader();

                while (oDataBatchReader.Read())
                {
                    switch (oDataBatchReader.State)
                    {
                        case ODataBatchReaderState.Initial:
                            // Optionally, handle the start of a batch payload.
                            break;

                        case ODataBatchReaderState.Operation:
                            // Encountered an operation (either top-level or in a changeset)
                            var operationResponse = oDataBatchReader.CreateOperationResponseMessage();

                            // Response ATOM markup parsing and presentation
                            using (var stream = operationResponse.GetStream())
                            {

                                switch (operationCount)
                                {
                                    case 2: // The "add new list" operation
                                        
                                        if (operationResponse.StatusCode == 201)
                                        {
                                            AddListResponse.Text = "Your list was created!";
                                        }
                                        else
                                        {
                                            AddListResponse.Text = "Your list was not created. Status returned: " + operationResponse.StatusCode.ToString();
                                        }

                                        operationCount--;
                                        break;

                                    case 1: // The "List of Lists" operation

//.........这里部分代码省略.........
开发者ID:CherifSy,项目名称:PnP,代码行数:101,代码来源:Default.aspx.cs

示例14: ServiceReadSingletonBatchRequestAndWriterBatchResponse

        private byte[] ServiceReadSingletonBatchRequestAndWriterBatchResponse(byte[] requestPayload)
        {
            IODataRequestMessage requestMessage = new InMemoryMessage() { Stream = new MemoryStream(requestPayload) };
            requestMessage.SetHeader("Content-Type", batchContentType);

            using (var messageReader = new ODataMessageReader(requestMessage, new ODataMessageReaderSettings(), this.userModel))
            {
                var responseStream = new MemoryStream();

                IODataResponseMessage responseMessage = new InMemoryMessage { Stream = responseStream };
                responseMessage.SetHeader("Content-Type", batchContentType);
                var messageWriter = new ODataMessageWriter(responseMessage);
                var batchWriter = messageWriter.CreateODataBatchWriter();
                batchWriter.WriteStartBatch();

                var batchReader = messageReader.CreateODataBatchReader();
                while (batchReader.Read())
                {
                    switch (batchReader.State)
                    {
                        case ODataBatchReaderState.Operation:
                            // Encountered an operation (either top-level or in a changeset)
                            var operationMessage = batchReader.CreateOperationRequestMessage();
                            if (operationMessage.Method == "PATCH")
                            {
                                var response = batchWriter.CreateOperationResponseMessage(operationMessage.ContentId);
                                response.StatusCode = 204;
                                response.SetHeader("Content-Type", "application/json;odata.metadata=none");
                            }
                            else if (operationMessage.Method == "GET")
                            {
                                var response = batchWriter.CreateOperationResponseMessage(null);
                                response.StatusCode = 200;
                                response.SetHeader("Content-Type", "application/json;");
                                var settings = new ODataMessageWriterSettings();
                                settings.SetServiceDocumentUri(new Uri(serviceDocumentUri));
                                using (var operationMessageWriter = new ODataMessageWriter(response, settings, this.userModel))
                                {
                                    var entryWriter = operationMessageWriter.CreateODataEntryWriter(this.singleton, this.webType);
                                    var entry = new ODataEntry() { TypeName = "NS.Web", Properties = new[] { new ODataProperty() { Name = "WebId", Value = 10 }, new ODataProperty() { Name = "Name", Value = "WebSingleton" } } };
                                    entryWriter.WriteStart(entry);
                                    entryWriter.WriteEnd();
                                }
                            }
                            else if (operationMessage.Method == "DELETE")
                            {
                                var response = batchWriter.CreateOperationResponseMessage(operationMessage.ContentId);
                                response.StatusCode = 500;
                            }

                            break;
                        case ODataBatchReaderState.ChangesetStart:
                            batchWriter.WriteStartChangeset();
                            break;
                        case ODataBatchReaderState.ChangesetEnd:
                            batchWriter.WriteEndChangeset();
                            break;
                    }
                }

                batchWriter.WriteEndBatch();
                responseStream.Position = 0;
                return responseStream.ToArray();
            }
        }
开发者ID:larsenjo,项目名称:odata.net,代码行数:65,代码来源:SingletonBatchRoundtripJsonLightTests.cs

示例15: ClientWriteSingletonBatchRequest

        private byte[] ClientWriteSingletonBatchRequest()
        {
            var stream = new MemoryStream();

            IODataRequestMessage requestMessage = new InMemoryMessage { Stream = stream };
            requestMessage.SetHeader("Content-Type", batchContentType);

            using (var messageWriter = new ODataMessageWriter(requestMessage))
            {
                var batchWriter = messageWriter.CreateODataBatchWriter();

                batchWriter.WriteStartBatch();

                // Write a query operation.
                var queryOperationMessage = batchWriter.CreateOperationRequestMessage("GET", new Uri(serviceDocumentUri + "/MySingleton"), /*contentId*/ null);

                // Header modification on inner payload.
                queryOperationMessage.SetHeader("Accept", "application/json;odata.metadata=full");

                // Write a changeset with multi update operation.
                batchWriter.WriteStartChangeset();

                // Create a update operation in the changeset.
                var updateOperationMessage = batchWriter.CreateOperationRequestMessage("PATCH", new Uri(serviceDocumentUri + "/MySingleton"), "1");

                // Use a new message writer to write the body of this operation.
                using (var operationMessageWriter = new ODataMessageWriter(updateOperationMessage))
                {
                    var entryWriter = operationMessageWriter.CreateODataEntryWriter();
                    var entry = new ODataEntry() { TypeName = "NS.Web", Properties = new[] { new ODataProperty() { Name = "WebId", Value = 10 }, new ODataProperty() { Name = "Name", Value = "SingletonWeb" } } };
                    entryWriter.WriteStart(entry);
                    entryWriter.WriteEnd();
                }

                updateOperationMessage = batchWriter.CreateOperationRequestMessage("PATCH", new Uri(serviceDocumentUri + "/MySingleton"), "2");

                using (var operationMessageWriter = new ODataMessageWriter(updateOperationMessage))
                {
                    var entryWriter = operationMessageWriter.CreateODataEntryWriter();
                    var entry = new ODataEntry() { TypeName = "NS.Web", Properties = new[] { new ODataProperty() { Name = "WebId", Value = 111 } } };
                    entryWriter.WriteStart(entry);
                    entryWriter.WriteEnd();
                }

                batchWriter.WriteEndChangeset();

                // Write a query operation.
                queryOperationMessage = batchWriter.CreateOperationRequestMessage("GET", new Uri(serviceDocumentUri + "/MySingleton/WebId"), /*contentId*/ null);

                queryOperationMessage.SetHeader("Accept", "application/json;odata.metadata=full");

                // DELETE singleton, invalid
                batchWriter.WriteStartChangeset();
                batchWriter.CreateOperationRequestMessage("DELETE", new Uri(serviceDocumentUri + "MySingleton"), "1");
                batchWriter.WriteEndChangeset();

                batchWriter.WriteEndBatch();

                stream.Position = 0;
                return stream.ToArray();
            }
        }
开发者ID:larsenjo,项目名称:odata.net,代码行数:62,代码来源:SingletonBatchRoundtripJsonLightTests.cs


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