簡體   English   中英

使用HttpWebRequest和HttpWebResponse會引發錯誤,但是僅在某些網站上

[英]Using HttpWebRequest and HttpWebResponse throws an error, however only on certain websites

此函數檢查url是否為有效地址,並與http://www.google.com一起使用

public static bool CheckValidURL(string url)
{
    try
    {
        //Creating the HttpWebRequest
        HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
        //Setting the Request method HEAD, you can also use GET too.
        request.Method = "GET";
        //Getting the Web Response.
        HttpWebResponse response = request.GetResponse() as HttpWebResponse;
        //Returns TRUE if the Status code == 200
        bool isValid;
        if (response.StatusCode == HttpStatusCode.OK)
        {
            isValid = true;
        }
        else
        {
            isValid = false;
        }
        response.Close();
        return isValid;
    }
    catch
    {
        //Any exception will returns false.
        return false;
    }
}

單擊菜單項時將調用此代碼,用於更新卡的價格。 它在foreach循環中,其中變量c是自定義類MagicCard

string url = "";
string webCardName = c.name.ToLower().Replace(" ", "-").Replace(",", "").Replace("\'", "");
string webSetName = MagicCard.GetSetName(c).ToLower().Replace(" ", "-").Replace(",", "").Replace("\'", "");
url = string.Format("shop.tcgplayer.com/magic/{0}/{1}", webSetName, webCardName);
if (WebScraper.CheckValidURL(url) == false)
{
    MessageBox.Show("ERROR: URL = " + url);
    return;
}

最終URL的示例是地址,盡管這是一個有效地址,但它被檢測為無效,並且任何其他卡都會產生類似的URL,這些URL也不起作用。 為什么會這樣呢?

您的站點需要一個User-Agent 我添加了這一行

request.UserAgent = "SO/1.0";

到您的代碼,並且有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM