비동기 요청 클래스 HttpClient
5940 단어 httpclient
using System;
using System.Net;
using System.Windows;
using System.IO;
public class HttpClient
{
private WebRequest webRequest = null;
public delegate void ResponseEventHandler(String responseResult);
public event ResponseEventHandler onResponseEventHandler;
public delegate void RequestEventHandler();
public event RequestEventHandler onRequestEventHandler;
public string PostData { get; set; }
public HttpClient(Uri clientUri)
{
Uri endpoint = clientUri;
webRequest = WebRequest.Create(endpoint);
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.Method = "POST";
}
public void Post()
{
webRequest.BeginGetRequestStream(new AsyncCallback(RequestReady), webRequest);
}
private void RequestReady(IAsyncResult asyncResult)
{
if (this.onRequestEventHandler != null)
{
this.onRequestEventHandler();
}
WebRequest request = asyncResult.AsyncState as WebRequest;
Stream requestStream = request.EndGetRequestStream(asyncResult);
using (StreamWriter writer = new StreamWriter(requestStream))
{
writer.Write(this.PostData);
writer.Flush();
writer.Close();
}
webRequest.BeginGetResponse(new AsyncCallback(ResponseReady), webRequest);
}
private void ResponseReady(IAsyncResult asyncResult)
{
if (this.onResponseEventHandler != null)
{
WebRequest request = asyncResult.AsyncState as WebRequest;
WebResponse response = request.EndGetResponse(asyncResult);
using (Stream responseStream = response.GetResponseStream())
{
String responseResult = String.Empty;
try
{
StreamReader reader = new StreamReader(responseStream);
responseResult = reader.ReadToEnd();
}
catch (WebException er)
{
responseResult = er.Message;
}
catch (Exception er)
{
responseResult = er.Message;
}
this.onResponseEventHandler(responseResult);
}
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
HttpClient 'GET' - 각도 단순화이봐, 친구들. 오늘 저는 API를 호출하는 Angular의 방법을 분석하고 싶습니다. 각 CRUD 작업에 대한 기사를 작성할 예정이므로 눈을 떼지 말고 팔로우하십시오! 이것이 기본이며 Angular 웹 사이트에서 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.