Message.GetBody Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
Objek bertipe T
yang memuat isi pesan ini.
Pengecualian
serializer
adalah 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
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.