-1
try
{

    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.site.ru/group/" + gr);
    request.AllowAutoRedirect = false;
    request.Method = "GET";
    request.CookieContainer = cookies;
    request.UserAgent = "Opera/9.80 (Windows 7; U; en) Presto/2.9.168 Version/11.50";
    request.ContentType = "application/x-www-form-urlencoded";
    HttpWebResponse response_headers = (HttpWebResponse)request.GetResponse();
    System.IO.Stream stream = response_headers.GetResponseStream();
    System.IO.StreamReader sr = new System.IO.StreamReader(stream);
    string response = sr.ReadToEnd();
    sr.Close();
    /*if (response_headers.Headers["Location"].Contains("alted"))
    {
        log("[-] GROUP is " + gr + " closed\r\n");
        return -2;
    }*/
    string gash = Regex.Match(response, @"gwtHash:""(?<id>[^""]+)""").Groups["id"].Value;
    string grpId = Regex.Match(response, @"state:""st.cmd=altGroupMain&amp;st.groupId=(?<id>[^""]+)""").Groups["id"].Value;
}
catch { log("[?] Can't parse ash and grpId\r\n"); return -1; }

このコードは、{}がコメント化されている場合、解釈時に正常に機能します。しかし、コメントを削除して実行すると、[?] Can't parse ash and grpId Why?=\を受け取ります。

4

2 に答える 2

3

response_headers.Headers ["Location"]はnullでなければならないため、例外が発生します。挿入検証:

if (response_headers.Headers["Location"] != null && response_headers.Headers["Location"].Contains("alted"))
    {
        log("[-] GROUP is " + gr + " closed\r\n");
        return -2;
    }
于 2012-12-03T15:36:54.990 に答える
1

すべてのコードの周りにすべてをキャッチするブロックがあるため、このメッセージが表示されます。

catch { log("[?] Can't parse ash and grpId\r\n"); return -1; }

これは悪い習慣です。try / catchブロックを削除し、元の例外が表示されるようにします。これにより、実際の問題が何であるかを確認できるようになります。

于 2012-12-03T15:37:01.573 に答える