Bagikan melalui


Message.GetBody Metode

Definisi

Mengambil isi instans ini Message .

Overload

GetBody<T>(XmlObjectSerializer)

Mengambil isi ini Message menggunakan serializer yang ditentukan.

GetBody<T>()

Mengambil isi instans ini Message .

Contoh

Contoh kode berikut menunjukkan klien yang menggunakan pabrik saluran untuk mengirim pesan dan membaca balasan.

using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Runtime.Serialization;

namespace ConsoleApplication1
{
    class client
    {

        static void RunClient()
        {
            //Step1: create a binding with just HTTP
            CustomBinding binding = new CustomBinding();
            binding.Elements.Add(new HttpTransportBindingElement());
            //Step2: use the binding to build the channel factory
            IChannelFactory<IRequestChannel> factory =
            binding.BuildChannelFactory<IRequestChannel>(
                             new BindingParameterCollection());
            //open the channel factory
            factory.Open();
            //Step3: use the channel factory to create a channel
            IRequestChannel channel = factory.CreateChannel(
               new EndpointAddress("http://localhost:8080/channelapp"));
            channel.Open();
            //Step4: create a message
            Message requestmessage = Message.CreateMessage(
                MessageVersion.Soap12WSAddressing10,
                "http://contoso.com/someaction",
                 "This is the body data");
            //send message
            Message replymessage = channel.Request(requestmessage);
            Console.WriteLine("Reply message received");
            Console.WriteLine("Reply action: {0}",
                                  replymessage.Headers.Action);
            string data = replymessage.GetBody<string>();
            Console.WriteLine("Reply content: {0}", data);
            //Step5: don't forget to close the message
            requestmessage.Close();
            replymessage.Close();
            //don't forget to close the channel
            channel.Close();
            //don't forget to close the factory
            factory.Close();
        }
        public static void Main()
        {
            Console.WriteLine("Press [ENTER] when service is ready");
            Console.ReadLine();
            RunClient();
            Console.WriteLine("Press [ENTER] to exit");
            Console.ReadLine();
        }
    }
}


Imports System.Collections.Generic
Imports System.Text
Imports System.ServiceModel
Imports System.ServiceModel.Channels
Imports System.Runtime.Serialization

Namespace ConsoleApplication1
    Friend Class client


        Private Shared Sub RunClient()
            'Step1: create a binding with just HTTP
            Dim binding As New CustomBinding()
            binding.Elements.Add(New HttpTransportBindingElement())
            'Step2: use the binding to build the channel factory
            Dim factory As IChannelFactory(Of IRequestChannel) = binding.BuildChannelFactory(Of IRequestChannel)(New BindingParameterCollection())
            'open the channel factory
            factory.Open()
            'Step3: use the channel factory to create a channel
            Dim channel As IRequestChannel = factory.CreateChannel(New EndpointAddress("http://localhost:8080/channelapp"))
            channel.Open()
            'Step4: create a message
            Dim requestmessage As Message = Message.CreateMessage(MessageVersion.Soap12WSAddressing10, "http://contoso.com/someaction", "This is the body data")
            'send message
            Dim replymessage As Message = channel.Request(requestmessage)
            Console.WriteLine("Reply message received")
            Console.WriteLine("Reply action: {0}", replymessage.Headers.Action)
            Dim data = replymessage.GetBody(Of String)()
            Console.WriteLine("Reply content: {0}", data)
            'Step5: don't forget to close the message
            requestmessage.Close()
            replymessage.Close()
            'don't forget to close the channel
            channel.Close()
            'don't forget to close the factory
            factory.Close()
        End Sub
        Public Shared Sub Main()
            Console.WriteLine("Press [ENTER] when service is ready")
            Console.ReadLine()
            RunClient()
            Console.WriteLine("Press [ENTER] to exit")
            Console.ReadLine()
        End Sub
    End Class
End Namespace

Keterangan

Setelah pesan dibuat, isi pesan dapat dibaca menggunakan GetBody metode pada pesan yang dikembalikan. Objek yang dikembalikan merangkum semua elemen anak dalam Body elemen . Karena isi pesan adalah aliran, pesan hanya dapat ditulis sekali, atau dibaca sekali.

GetBody<T>(XmlObjectSerializer) Gunakan kelebihan beban saat bekerja dengan pesan JSON; GetBody<T>() kelebihan beban tidak berfungsi.

GetBody<T>(XmlObjectSerializer)

Sumber:
Message.cs
Sumber:
Message.cs
Sumber:
Message.cs

Mengambil isi ini Message menggunakan serializer yang ditentukan.

public:
generic <typename T>
 T GetBody(System::Runtime::Serialization::XmlObjectSerializer ^ serializer);
public T GetBody<T> (System.Runtime.Serialization.XmlObjectSerializer serializer);
member this.GetBody : System.Runtime.Serialization.XmlObjectSerializer -> 'T
Public Function GetBody(Of T) (serializer As XmlObjectSerializer) As T

Jenis parameter

T

Isi pesan.

Parameter

serializer
XmlObjectSerializer

Objek yang XmlObjectSerializer digunakan untuk membaca isi pesan.

Mengembalikan

T

Objek bertipe T yang memuat isi pesan ini.

Pengecualian

serializeradalah null.

Keterangan

Instans Message memiliki isi yang sesuai dengan isi SOAP. Ini dapat diakses sebagai XmlDictionaryReader dengan memanggil GetReaderAtBodyContents. Awalnya diposisikan langsung setelah <S:Body> elemen , dan kembali EOF mencapai </S:Body> elemen . Atau, jika Anda mengharapkan isi berisi objek berseri, Anda dapat memanggil GetBody sebagai gantinya. Anda harus menyadari bahwa isi pesan hanya dapat diakses sekali dan pesan hanya dapat ditulis sekali. Jika Anda ingin mengakses isi beberapa kali, gunakan CreateBufferedCopy untuk membuat MessageBuffer instans.

GetBody<T>(XmlObjectSerializer) Gunakan kelebihan beban saat bekerja dengan pesan JSON; GetBody<T>() kelebihan beban tidak berfungsi.

Berlaku untuk

GetBody<T>()

Sumber:
Message.cs
Sumber:
Message.cs
Sumber:
Message.cs

Mengambil isi instans ini Message .

public:
generic <typename T>
 T GetBody();
public T GetBody<T> ();
member this.GetBody : unit -> 'T
Public Function GetBody(Of T) () As T

Jenis parameter

T

Isi pesan.

Mengembalikan

T

Objek bertipe T yang memuat isi pesan ini.

Keterangan

Instans Message memiliki isi yang sesuai dengan isi SOAP. Ini dapat diakses sebagai XmlDictionaryReader dengan memanggil GetReaderAtBodyContents. Awalnya diposisikan langsung setelah <S:Body> elemen , dan kembali EOF mencapai </S:Body> elemen . Atau, jika Anda mengharapkan isi berisi objek berseri, Anda dapat memanggil GetBody sebagai gantinya. Anda harus menyadari bahwa isi pesan hanya dapat diakses sekali dan pesan hanya dapat ditulis sekali. Jika Anda ingin mengakses Body beberapa kali, gunakan CreateBufferedCopy untuk membuat MessageBuffer instans.

GetBody<T>(XmlObjectSerializer) Gunakan kelebihan beban saat bekerja dengan pesan JSON; GetBody<T>() kelebihan beban tidak berfungsi.

Berlaku untuk