0

私はそこからテキストボックス(複数行)を持っています。すべてのリンクにWebリクエストを送信して、リンクが機能しているかどうかを確認したいのですが、機能していない場合はエラーメッセージが表示されます

string strLink = TextBox1.Text;
WebResponse objResponse;
WebRequest objRequest = System.Net.HttpWebRequest.Create(strLink);

objResponse = objRequest.GetResponse();
using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))
{
    strLink = sr.ReadToEnd();
    sr.Close();
}
strLink = strLink.Replace("<form id='form1' method='post' action=''>", "");
strLink = strLink.Replace("</form>", "");
//strResult = strResult.Replace("<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" /><html xmlns="http://www.w3.org/1999/xhtml">");
div.InnerHtml = TextBox1.Text;
4

2 に答える 2

3

私があなたを誤解していない限り、次のようなことができます:

var links = textBox1.Text.Split(new string[] { "\n", "\r" }, StringSplitOptions.RemoveEmptyEntries);
foreach (var link in links) {
    if (!IsLinkWorking(link)) {
        //Here you can show the error. You don't specify how you want to show it.
        textBox2.Text += string.Format("Link {0} not working\n", link);
    }
}

bool IsLinkWorking(string url) {
    HttpWebRequest request = (HttpWebRequest) HttpWebRequest.Create(url);

    //You can set some parameters in the "request" object...
    request.AllowAutoRedirect = true;

    try {
        HttpWebResponse response = (HttpWebResponse) request.GetResponse();
        return true;
    } catch { //TODO: Check for the right exception here
        return false;
    }
}

あなたがこのようなものを持っていたと仮定しますtextBox1:

http://www.stackoverflow.com/
http://www.invalid-page.com/
http://www.invalid.again.com/120938213

の次のテキストで終了しますtextBox2

リンクhttp://www.invalid-page.com/が機能しない
リンクhttp://www.invalid.again.com/120938213が機能しない

于 2013-02-27T06:08:17.127 に答える
0

次のように HttpWebResponse ステータスを使用できます。

HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
if (objResponse.StatusCode == HttpStatusCode.OK)
{
   // put your code when link is valid.
}

コードを の中に入れて、try catch接続エラーなどの例外をキャッチすることもできます。

于 2013-02-27T06:09:33.690 に答える