/ / Ako môžem reagovať na StatusCode WebClient predtým, ako vyvolá výnimku - .net, http, rest

Ako môžem reagovať na stavový kód webového klienta skôr, ako hodí výnimku - .net, http, rest

Píšeme súbor služieb typu REST a vraciame chyby ako rôzne stavové kódy.

V našej klientskej aplikácii uprednostňujeme, ak náš pracovný postup nevyžadoval, aby sme zachytili a odovzdali výnimku na odhalenie chybového kódu.

Existuje spôsob, ako povedať WebClient alebo HttpWebRequest, aby prestal hádzať výnimky, keď narazí na StatusCode iný ako 200?

odpovede:

2 pre odpoveď č. 1

Dizajn hovorí, že čokoľvek iné ako 200 alebo 201 je výnimočné.

HttpStatusCode httpStatusCode;
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://example.org/resource");
try
{
using (HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse())
{
// handle 200/201 case
}
}
catch (WebException webException)
{
if (webException.Response != null)
{
HttpWebResponse httpWebExceptionResponse = (HttpWebResponse)webException.Response;
switch (httpWebExceptionResponse.StatusCode)
{
case 304:  // HttpStatusCode.NotModified
break;
case 410:  // HttpStatusCode.Gone
break;
case 500:  // HttpStatusCode.InternalServerError
break;
// etc
}
}
else
{
//did not contact host. Invalid host name?
}
}
return httpStatusCode;