2017-03-22 34 views
1

我想用C#X框選項。 爲此我創建如下。C# - 創建的HttpWebRequest沒有HTTP或HTTPS

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(System.Uri.UnescapeDataString(url)); 
      string frameSupport = string.Empty; 
      using (WebResponse webResponse = request.GetResponse()) 
       frameSupport = webResponse.Headers["X-Frame-Options"]; 

但是當我通過URL,而不HTTP或HTTPS,我得到了以下問題。

Unable to cast object of type 'System.Net.FileWebRequest' to type 'System.Net.HttpWebRequest'. 
+0

我認爲解決方案是顯而易見的。通過適當的方案。 「WebRequest」如何假設它是一個文件,ftp,http或https請求?爲什麼你首先使用無效的URL? –

+0

此外,沒有'HttpWebRequest.Create'方法。這是在[WebRequest](https://msdn.microsoft.com/en-us/LIbrary/bw00b1dc(v = vs.95).aspx)上定義的工廠方法。編譯器生成一個警告,當你嘗試調用基這樣 –

+0

有時用戶靜態方法可以像「//google.com」輸入網址,而不HTTP或HTTPS的Visual Studio增加squigglies。因此,網址將重定向到適當的http或https。爲此,我們允許用戶給出這樣的輸入。我們可以使用「//google.com」獲取網絡請求 –

回答

2

如果使用HttpWebRequest.Create,你實際上是調用WebRequest.Create(因爲HttpWebRequest延伸WebRequest)。
因此,該方法不僅對HTTP請求,但它會嘗試獲取的實際類型基於URI方案的要求。
如果你省略http(s)方案,它不知道你正在執行什麼類型的請求,所以在這種情況下,它假定它是一個FileWebRequest