XML-RPC.NET (http://www.xml-rpc.net/)과 특정 네트워크 포트에서 XML-RPC 통신을 수신하고 응답하는 HttpListener 메서드를 사용하고 있습니다.Stream 객체를 읽지 않고 읽음
이HttpListener hlListener = new HttpListener();
HttpListenerContext hlcContext = hlListener.GetContext();
// hlcContext.Request.InputStream contains what I want
스트림 hlcContext.Request.InputStream
에서 액세스 할 수 있지만,이 스트림은 그래서 그것을 읽을 수 없습니다 시크되지 /를 표시 :
에서 오는 요청의 본문은 HttpListenerContextInstance.Request.InputStream
Stream 개체를 통해 액세스 할 수 그런 다음 XML-RPC.NET 라이브러리가 필요에 따라 사용할 수 있도록 다시 시작 부분을 찾으십시오. 일단 읽으면 소비되고 다시 읽을 수 없습니다.
이 상황을 처리하는 한 가지 방법은 Stream에서 MemoryStream으로 변환하는 것이지만, XML-RPC.NET이 계속되도록이 방법을 모르는 것입니다. 스트림 대신 MemoryStream을 사용합니다.
// hlcContext.Request.InputStream is currently filled
MemoryStream msInput = new MemoryStream();
hlcContext.Request.InputStream.CopyTo(msInput);
byte[] byteInput = msInput.ToArray();
// hlcContext.Request.InputStream is now empty and XML-RPC.NET can no longer use it :(
내가 문자열에 저장하고 스트림 작업을 계속 가질 수 있도록 내가 스트림에서 읽을 수있는 방법 : 그냥 MemoryStream을에 스트림을 복사하면 그 시점 과거는 사용할 수 없게 스트림을 소비하는 것 그 시점 이후에 XML-RPC.NET?
방법을 사용할 수있다 XML-RPC.NET에 스트림을 제공하고 있습니까? 나는 당신의 예제 코드에서 그것을 보지 못한다. –
스트림은 웹 사이트에 액세스 할 때마다 (http : // localhost/DoSomething) XML-RPC.NET 라이브러리에 의해/어딘가에 만들어집니다. – Coder6841
코드를 살펴볼 시간이 없지만'HttpListener'가 XML RPC 타입이라고 가정하면 서브 클래스를 만들고 필요한 동작을 주입하기 위해'GetContext()'를 구현하는 방법을 변경할 수 있습니다. –