2017-07-27 15 views
0

ASP.NetでC#を使用してURLを読み取るときに、HTTPヘッダーのステータス(403または404)を読み取る必要があります。例: URL1:https://www.instagram.com/khaniki.ah URL2:https://www.instagram.com/khaniki.ah123456 URL1を読み込もうとしたときにステータス200(HttpStatusCode.Found)が取得され、存在していないときにURL2を読み取ると同じ状態になります。写真をもっと見る。あなたが要求しているサーバはHEADリクエストを受け付けていないようだASP.Net/C#を使用してクライアントURLのHTTPヘッダーステータスコードを読み取る方法

var Url = UrlTbx.Text; 
    Uri urlCheck = new Uri(Url); 

    HttpWebRequest HttpRequest = (HttpWebRequest)WebRequest.Create(Url); 
    HttpRequest.Timeout = 15000; 
    HttpRequest.AllowAutoRedirect = false; 
    HttpRequest.ServicePoint.Expect100Continue = false; 
    HttpRequest.ContentType = "application/x-www-form-urlencoded"; 
    //HttpRequest.Method = "GET"; 
    HttpRequest.Method = "HEAD";//both methods was tested 
    HttpWebResponse HttpResponse; 

    try 
    { 
     HttpResponse = (HttpWebResponse)HttpRequest.GetResponse(); 

     if (HttpResponse.StatusCode == HttpStatusCode.Found) 
      Lit.Text = "YES" + "/" + HttpResponse.StatusCode; 
     else if (HttpResponse.StatusCode == HttpStatusCode.NotFound) 
      Lit.Text = "NO" + "/" + HttpResponse.StatusCode; 
    } 
    catch (Exception) 
    { 
     return false; 
    } 

URL1 URL2

答えて

2

また、私はこの次のコードを使用します。 GETヘッダー方式を維持しようと

HttpRequest.ContentType = "application/x-www-form-urlencoded"; 

をも見削除しようとすると、200は私が単に

をするとき、あなたが探している404を取得するあなたは200 ためHttpStatusCode.OK話をしているではありません
var Url = "https://www.instagram.com/khaniki.ah123456/"; 
    Uri urlCheck = new Uri(Url); 

    HttpWebRequest HttpRequest = (HttpWebRequest)WebRequest.Create(Url); 

    HttpRequest.Method = "Get"; 

    var dHttpWebResponse = await HttpRequest.GetResponseAsync(); 

または

var Url = "https://www.instagram.com/khaniki.ah123456/"; 
     Uri urlCheck = new Uri(Url); 
     var client = new HttpClient(); 
     var res = client.GetAsync(urlCheck).Result; 
     var statusCode = res.StatusCode; //should be 404 
+0

(例外を回避するために)、HTTPClientのAPIを使用してみてください、私はあなたの意見をテストしたが、私はヘッダーで、ステータス400を見つけるか、または取得することはできません –

+0

私も慣れる方法。応答「プラグマを参照してください:なし - キャッシュ は変更される場合:受け入れる言語を コンテンツ言語:最大エージング= 86400 接続:キープアライブ のContent-Length:0 のCache-Control:プライベート 厳密-トランスポートセキュリティエンを、no-cache、no-store、must-revalidate コンテンツタイプ:text/html; charset = utf-8 日付:27 7月2017 10:58:20 GMT 有効期限:2000年1月1日00: 00:00 GMT 場所:https://www.instagram.com/khaniki.ah123456/「 –

+0

私の答えが更新されました.HTMLクライアントクラスでは、例外の代わりに404が必要です。 – KitAndKat

関連する問題