2012-12-02 47 views
-3

我發送獲取請求的網站,並根據我必須做smthng的迴應。開關櫃實現

   HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://www.site.ru/sfdcsfs/"); 
req.AllowAutoRedirect = false; 
req.Method = "GET"; 
req.CookieContainer = cookies; 
req.UserAgent = "Opera/9.80 (Windows 7; U; en) Presto/2.9.168 Version/11.50"; 
req.ContentType = "application/x-www-form-urlencoded"; 
res1 = (HttpWebResponse)req.GetResponse(); 
res1.Close(); 
switch (res1) 
{ 
    case res1.Headers["XcT"]: log("[+] ok"); 
    case res1.Headers["Location"].Contains("alreadymember"): log("[-] alreadymember"); 
    default: log("[-] bad"); 
} 

但我有錯誤

Error 1 A switch expression or case label must be a bool, char, string, integral, enum, or corresponding nullable type C:\Users\asus\documents\visual studio 2010\Projects\OdGP\OdGP\Form1.cs 195 29 OdGP 
+0

它是什麼您不明白有關錯誤消息? –

+2

只有一種情況的switch語句?爲什麼不使用'if/else'? –

+0

更新代碼 – user1870480

回答

1

只有某些類型可以在switch語句中使用,它是一個字符串。
你不應該在switch語句

switch (res1.Headers["XcT"].ToString()) 
{ 
    case "[+] ok": 
     log("[+] ok"); 
     break; 
    default: log("[-] bad"); 
} 
+0

不,案例大約10 – user1870480

0

忘了休息,我建議你閱讀switch報表的文檔,因爲這裏存在幾個誤區。

您的切換表達式res1的類型爲HttpWebResponse,正如錯誤所述,它是不允許的。

case標籤必須是編譯時常量,任意表達式如res1.Headers["XcT"]也是不允許的。

標籤之間的穿透不被允許。所有案例標籤(和default標籤)必須具有breakreturn或引發異常。此規則的例外是,您可能有多個執行相同語句塊的標籤,如下所示:

int i = 0; 
switch (i) 
{ 
    case 0: 
    case 1: 
    Console.WriteLine(i); break; 
    default: break; 
}