moyen efficace de récupérer HttpWebResponse et de le mettre en XDocument
-
18-09-2019 - |
Question
Il y a un service local dont j'ai besoin de consommer un XML généré aux flux de documents. Bien que le point final n'est pas un service REST en soi. Je voulais être sûr que la méthode que je l'ai indiqué ci-dessous est la façon la plus efficace d'obtenir la réponse retournée dans un XDocument
.
Uri requestUri = null;
Uri.TryCreate(String.Format(SearchAddress, filter),
UriKind.Absolute, out requestUri);
NetworkCredential nc =
new NetworkCredential("Login", "Password");
CredentialCache cCache = new CredentialCache();
cCache.Add(requestUri, "Basic", nc);
HttpWebRequest request =
(HttpWebRequest)HttpWebRequest.Create(requestUri);
request.Credentials = cCache;
request.PreAuthenticate = true;
request.Method = WebRequestMethods.Http.Get;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
XDocument xDoc =
XDocument.Load(new StreamReader(response.GetResponseStream()));
La solution
Si vous voulez une requête synchrone alors à mon avis, oui il est.
Mais ce serait une bonne idée de gérer WebException.
Dans WebException.Response.GetResponseStream (), vous devez avoir soit une page d'erreur HTTP / HTML ou un SoapFault.
Demande Asynch
// commence la récupération asynch du flux de réponse ...
var result = request.BeginGetResponse (...)
// définir une méthode de rappel de délai d'attente, BeginGetResponse délai d'attente ...
Indifférent ThreadPool.RegisterWaitForSingleObject (result.AsyncWaitHandle, ...)