1

私は提供URLが利用可能かどうかを調べようとしています。利用可能とは、ドメインが利用可能であることを意味するのではなく、URL にアクセスできるか、アクセスできないことを意味します

私はコードをテストしました

var webrequest = (HttpWebRequest)WebRequest.Create(
                                       "http://localhost:64519/TestPage.aspx");
webrequest.Method = "HEAD";
HttpWebResponse response = webrequest.GetResponse() as HttpWebResponse;

Testpageのページロードにいくつかのコードがあります

protected void Page_Load(object sender, EventArgs e)
{
    StreamReader stream = new StreamReader(Request.InputStream);
    XDocument xmlInput = XDocument.Load(stream);
}

今の問題は、リクエストにHEADを追加しても、PageLoadに入り、例外をスローすることです。

シナリオ: 提供された URL に XML を送信しようとしています。XML の場合は正常に動作しますが、Link が有効かどうかを確認しようとすると、XDocument.Load(stream); のために例外がスローされます。XMLを持っていない\確かに使用して問題を解決できます

if (stream.BaseStream.Length != 0)
{
    XDocument xmlInput = XDocument.Load(stream); 
}

しかし、それは適切ではありません。リンクがライブであるか、私の研究に基づいていないかを知りたいだけですが、ヘッダーを追加するだけですが、ヘッダーを追加しても問題はまだあります

だから、誰かがこれで私を助けてくれるか、どんな種類の助けもいただければ幸いです

4

3 に答える 3

4

HttpWebRequestおよびHttpWebResponseクラスを使用して、リクエストのメソッドを「HEAD」に設定できます。

他の可能なメソッドのリスト。

var request = (HttpWebRequest)WebRequest.Create("http://localhost:64519/TestPage.aspx");
request.Method = "HEAD";

var response = (HttpWebResponse)request.GetResponse();

var success = response.StatusCode == HttpStatusCode.OK;
于 2013-01-17T11:56:28.777 に答える
1

GET メソッドを使用する

Web サイトがクエリに応答する場合は、応答データを取得します...

そのような URL がない場合は、WebException エラーがスローされます... Yoiu はそれをキャッチして、それに対して何かを行うことができます...

ここに私のアイデアをリストします。私はそれがあなたの問題を解決すると思う

try
{
    HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://localhost:64519/TestPage.aspx");
    webRequest.Method = "GET";

    string responseData = string.Empty;
    HttpWebResponse httpResponse = (HttpWebResponse)webRequest.GetResponse();

    using (StreamReader responseReader = new StreamReader(httpResponse.GetResponseStream()))
    {
        responseData = responseReader.ReadToEnd();
    }
}
catch (System.Net.WebException ex)
{
   //Code - If does not Exist  
}
于 2013-01-17T11:59:41.590 に答える
1

その場で関数を作成しました。それがあなたのために働くことを願っています:)

public bool isValid(string url) {
    Stream sStream;
    HttpWebRequest urlReq;
    HttpWebResponse urlRes;

    try {
        urlReq = (HttpWebRequest) WebRequest.Create(url);
        urlRes = (HttpWebResponse) urlReq.GetResponse();
        sStream = urlRes.GetResponseStream();

        string read = new StreamReader(sStream).ReadToEnd();
        return true;

    } catch (Exception ex) {
        //Url not valid
        return false;
    }

}
于 2013-01-17T11:53:50.190 に答える