-3

我向该站点发送 Get 请求,并根据响应我必须做 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
4

2 回答 2

1

switch 语句中只能使用某些类型,其中之一是字符串。
你不应该忘记 switch 语句中的 break

switch (res1.Headers["XcT"].ToString())
{
    case "[+] ok":
       log("[+] ok");
       break;
    default: log("[-] bad");
}
于 2012-12-02T20:35:08.367 回答
0

我建议您阅读有关switch语句的文档,因为这里有几个错误。

正如错误所说,您的 switch 表达式res1具有HttpWebResponse不允许的类型。

case标签必须是编译时常量,res1.Headers["XcT"]也不允许使用任意表达式。

不允许从标签之间跌落。所有案例标签(和default标签)都必须有 a break、 areturn或抛出异常。此规则的例外是您可能有多个执行相同语句块的标签,如下所示:

int i = 0;
switch (i) 
{
  case 0:
  case 1:
   Console.WriteLine(i); break;
  default: break;
}
于 2012-12-02T21:03:30.227 回答