내 SL 응용 프로그램에서 Rx를 사용하고 싶습니다. 내 웹 서버에 내 REST 요청에 대한 관찰 가능을 설정하고 싶습니다. Observable.FromEvent 또는 Observable.FromAsync를 연결하는 방법을 알지 못합니다. 최선의 추측은 Webclient 완료가 이벤트를 시작한 다음 Observable.FromEvent를 수행하는 것입니다. 거기에 더 좋은 방법이 있습니까?Silverlight Webclient에서 Rx Observable을 수행하는 방법
답변
이제 Rx에서 웹 요청을하는 가장 좋은 방법입니다.
public IObservable<WebResponse> MakeWebRequest(
Uri uri,
Dictionary<string, string> headers = null,
string content = null,
int retries = 3,
TimeSpan? timeout = null)
{
var request = Observable.Defer(() =>
{
var hwr = WebRequest.Create(uri);
if (headers != null)
{
headers.ForEach(x => hwr.Headers[x.Key] = x.Value);
}
if (content == null)
{
return Observable.FromAsyncPattern<WebResponse>(hwr.BeginGetResponse, hwr.EndGetResponse)();
}
var buf = Encoding.UTF8.GetBytes(content);
return Observable.FromAsyncPattern<Stream>(hwr.BeginGetRequestStream, hwr.EndGetRequestStream)()
.SelectMany(x => Observable.FromAsyncPattern<byte[], int, int>(x.BeginWrite, x.EndWrite)(buf, 0, buf.Length))
.SelectMany(_ => Observable.FromAsyncPattern<WebResponse>(hwr.BeginGetResponse, hwr.EndGetResponse)());
});
return request.Timeout(timeout ?? TimeSpan.FromSeconds(15)).Retry(retries);
}
는 여기를 사용하는 방법은 다음과 같습니다
MakeWebRequest(new Uri("http://www.google.com"))
.Subscribe(
x => Console.WriteLine("Response is {0}", x),
ex => Console.WriteLine("Someone Set Us Up The Bomb: {0}", ex.Message));
그게 전부 흡수하는 데 시간이 걸릴 것! – pm100
구현에 대해 걱정하지 마라. 웹 요청을하기 위해 정보를 전달한다는 것을 알고, 결국 하나의 항목 (응답)을 반환하는 IObservable
오류 처리를 포함한 예제 사용 코드를 포함 할 수 있습니까? – AnthonyWJones
- 1. Silverlight 4에서 TPL 및 Rx 사용
- 2. 마지막 관찰자가 구독을 취소했을 때 이벤트 게시를 중단하는 Rx observable을 어떻게 만들 수 있습니까?
- 3. Silverlight 용 Reactive Extensions (Rx) - System.Interactive.dll은 어디로 이동 되었습니까?
- 4. Silverlight :이 데이터 바인딩을 수행하는 방법?
- 5. WebClient에서 쿠키를 사용하려면 어떻게해야합니까?
- 6. WebClient에서 javascript를 실행합니다.
- 7. WebClient에서 KeepAlive를 사용합니까?
- 8. 반복적으로 메서드를 호출하는 observable을 만듭니다.
- 9. Rx JS에서 트리거 맞춤 이벤트
- 10. RX 스케줄러 - 무엇입니까?
- 11. Rx - 이벤트 수신 거부
- 12. WebClient에서 gzip 응답 압축 해제
- 13. Webclient에서 오류를 캡처하는 방법은 무엇입니까?
- 14. objective-c (아이폰 버전)에서 observer/observable을 수행하는 가장 좋은 방법은 무엇입니까?
- 15. Silverlight 4에서 HTTP PUT 및 DELETE 작업을 수행하는 방법
- 16. Silverlight Storyboard에서 코드를 수행하는 방법 xaml 대신 Begintime
- 17. 데이터베이스 호출이 필요한 경우 Silverlight/RIA에서 유효성 검사를 수행하는 방법?
- 18. Silverlight MVVM : 지역화를 올바르게 수행하는 방법? 일반 실버 라이트 프로젝트에서
- 19. Rx Switch() 연산자는 어떻게 되었습니까?
- 20. 컨텍스트 메뉴 작업에 Rx 사용
- 21. Reactive Extensions (Rx) Misses 이벤트
- 22. Silverlight에서 간단한 바인딩을 수행하는 방법?
- 23. Silverlight : 다른 Silverlight .xap 파일을로드하고 실행하는 방법
- 24. ObservableCollection에서 특정 항목을보기 위해 Rx (Reactive Extensions) 사용
- 25. Windows Phone 7의 WebClient에서 System.NotSupportedException이 발생했습니다.
- 26. HTTP 302 리디렉션으로 WebClient에서 위치 가져 오기?
- 27. Grails에서 트랜잭션을 수행하는 방법
- 28. xml에서 enum을 수행하는 방법
- 29. 휘트니스 기능을 수행하는 방법
- 30. OpenID로 OAuth2를 수행하는 방법
+1 나는 어떤 하나처럼 보이는 무엇을 보여보고 싶어요) – AnthonyWJones