2013-04-20 95 views
0

我在VB.NET中使用postreq()发布了一个web表单。从PostRequest中提取数字

Response包含字符串,"sessionId=WXYZ",其中WXYZ是4个位数。我如何提取这些数字?

这里是我的代码:

Public Sub btn1_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn1.Click 
    Dim postData As String = "some Post Data" 
    Dim url as String = "http://localhost/form.php" 
    Dim tempCookies As New CookieContainer 
    Dim encoding As New UTF8Encoding 
    Dim byteData As Byte() = encoding.GetBytes(postData) 
    Dim postReq As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest) 
    postReq.Method = "POST" 
    postReq.KeepAlive = True 
    postReq.CookieContainer = tempCookies 
    postReq.ContentType = "application/x-www-form-urlencoded" 
    postReq.Referer = url 
    postReq.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/4.0 (.NET CLR 3.5.30729)" 
    postReq.ContentLength = byteData.Length 

    Dim postreqstream As Stream = postReq.GetRequestStream() 
    postreqstream.Write(byteData, 0, byteData.Length) 
    postreqstream.Close() 
    Dim postresponse As HttpWebResponse 

    postresponse = DirectCast(postReq.GetResponse(), HttpWebResponse) 
    tempCookies.Add(postresponse.Cookies) 
    logincookie = tempCookies 
    Dim postreqreader As New StreamReader(postresponse.GetResponseStream()) 

    Dim thepage As String = postreqreader.ReadToEnd 
    Dim r As New System.Text.RegularExpressions.Regex("sessionId=....")  
End Sub 
+0

你有正则表达式应该工作;具体是哪里出了问题? (或者是你使用'Regex'对象的问题?) – Ryan 2013-04-20 04:39:40

+0

是的,但是我只想格式化整数部分。 我想做的事情就像“grep -oE”([0-9] {4})'File'一样。 – devoidfeast 2013-04-20 04:55:51

回答

1

只要把该部分在一组,这样你就可以使用匹配对象的Groups property得到其数值:

Dim r As New Regex("sessionId=(\d{4})") 
Dim id As String = r.Match(thepage).Groups(1).Value 
+0

Thanx minitech这是Bigtech从你.. :) 保持呼吸 – devoidfeast 2013-04-20 05:24:18