Message.GetBody 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
이 Message 인스턴스의 본문을 검색합니다.
오버로드
GetBody<T>(XmlObjectSerializer) |
지정된 serializer를 사용하여 이 Message의 본문을 검색합니다. |
GetBody<T>() |
이 Message 인스턴스의 본문을 검색합니다. |
예제
다음 코드 예제에서는 채널 팩터리를 사용하여 메시지를 보내고 회신을 읽는 클라이언트를 보여 줍니다.
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
설명
메시지를 만든 후에는 반환된 메시지의 메서드를 GetBody 사용하여 메시지 본문을 읽을 수 있습니다. 반환된 개체는 요소 내 Body
의 모든 자식 요소를 캡슐화합니다. 메시지 본문은 스트림이므로 한 번만 작성하거나 한 번만 읽을 수 있습니다.
GetBody<T>(XmlObjectSerializer) JSON 메시지로 작업할 때 오버로드를 사용합니다. 오버로드가 GetBody<T>() 작동하지 않습니다.
GetBody<T>(XmlObjectSerializer)
- Source:
- Message.cs
- Source:
- Message.cs
- Source:
- Message.cs
지정된 serializer를 사용하여 이 Message의 본문을 검색합니다.
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
형식 매개 변수
- T
메시지의 본문입니다.
매개 변수
- serializer
- XmlObjectSerializer
메시지 본문을 읽는 데 사용되는 XmlObjectSerializer 개체입니다.
반환
이 메시지의 본문을 포함하는 T
형식의 개체입니다.
예외
serializer
은 null
입니다.
설명
Message instance SOAP 본문에 해당하는 본문이 있습니다. 를 호출GetReaderAtBodyContents하여 로 XmlDictionaryReader 액세스할 수 있습니다. 처음에는 요소 바로 다음에 <S:Body>
위치하며 요소에 도달할 때 를 반환 EOF
합니다 </S:Body>
. 또는 본문에 직렬화된 개체가 포함될 것으로 예상되는 경우 대신 를 호출 GetBody 할 수 있습니다. 메시지 본문은 한 번만 액세스할 수 있고 메시지는 한 번만 작성할 수 있다는 점에 유의해야 합니다. 본문에 여러 번 액세스하려면 를 사용하여 CreateBufferedCopy instance 만듭니 MessageBuffer 다.
GetBody<T>(XmlObjectSerializer) JSON 메시지로 작업할 때 오버로드를 사용합니다. 오버로드가 GetBody<T>() 작동하지 않습니다.
적용 대상
GetBody<T>()
- Source:
- Message.cs
- Source:
- Message.cs
- Source:
- Message.cs
이 Message 인스턴스의 본문을 검색합니다.
public:
generic <typename T>
T GetBody();
public T GetBody<T> ();
member this.GetBody : unit -> 'T
Public Function GetBody(Of T) () As T
형식 매개 변수
- T
메시지의 본문입니다.
반환
이 메시지의 본문을 포함하는 T
형식의 개체입니다.
설명
Message instance SOAP 본문에 해당하는 본문이 있습니다. 를 호출GetReaderAtBodyContents하여 로 XmlDictionaryReader 액세스할 수 있습니다. 처음에는 요소 바로 다음에 <S:Body>
위치하며 요소에 도달할 때 를 반환 EOF
합니다 </S:Body>
. 또는 본문에 직렬화된 개체가 포함될 것으로 예상되는 경우 대신 를 호출 GetBody 할 수 있습니다. 메시지 본문은 한 번만 액세스할 수 있고 메시지는 한 번만 작성할 수 있다는 점에 유의해야 합니다. 를 여러 번 액세스 Body
하려면 를 사용하여 CreateBufferedCopy instance 만듭니 MessageBuffer 다.
GetBody<T>(XmlObjectSerializer) JSON 메시지로 작업할 때 오버로드를 사용합니다. 오버로드가 GetBody<T>() 작동하지 않습니다.
적용 대상
.NET