이 나는 웹 페이지를 긁어 할 노력하고있어하지만 데이터를 게시하기 위해 나는쿠키에서 웹 세션을 얻는 방법?
은 어떻게 ID 것을 얻을 수 web_session = HQJ3G1GPAAHRZGFR
같은 웹 세션 ID가 필요?내 코드는 지금까지 있습니다 :
Private Sub test() Dim postData As String = "web_session=HQJ3G1GPAAHRZGFR&intext=O&term_code=201210&search_type=A&keyword=&kw_scope=all&kw_opt=all&subj_code=BIO&crse_numb=205&campus=*&instructor=*&instr_session=*&attr_type=*&mon=on&tue=on&wed=on&thu=on&fri=on&sat=on&sun=on&avail_flag=on" '/BANPROD/pkgyc_yccsweb.P_Results Dim tempCookie As New CookieContainer Dim encoding As New UTF8Encoding Dim byteData As Byte() = encoding.GetBytes(postData) System.Net.ServicePointManager.SecurityProtocol = Net.SecurityProtocolType.Ssl3 Try tempCookie.GetCookies(New Uri("https://taylor.yc.edu/BANPROD/pkgyc_yccsweb.P_Results")) 'postData="web_session=" & tempCookie. Dim postReq As HttpWebRequest = DirectCast(WebRequest.Create("https://taylor.yc.edu/BANPROD/pkgyc_yccsweb.P_Results"), HttpWebRequest) postReq.Method = "POST" postReq.KeepAlive = True postReq.CookieContainer = tempCookie postReq.ContentType = "application/x-www-form-urlencoded" postReq.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; Media Center PC 4.0; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .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) tempCookie.Add(postresponse.Cookies) Dim postresreader As New StreamReader(postresponse.GetResponseStream) Dim thepage As String = postresreader.ReadToEnd MsgBox(thepage) Catch ex As WebException MsgBox(ex.Status.ToString & vbNewLine & ex.Message.ToString) End Try End Sub
위대했습니다. 나는 그것을 영원히 이해하려고 노력 했었고 그것을 올바르게 할 수 없었습니다. 당신의 도움을 주셔서 감사합니다! – Jon49
동시 환경에서이 유형의 기능을 지원해야합니다. 나는 WebClient가 동시 I/O를 지원하지 않는다는 것을 알고 있지만 여러 웹 요청에 하나의 'CookieContainer'를 제공하여 단일 세션을 사용하는 방법이 있습니까? 필요한 경우 논리를 더 설명 할 수 있습니다. – Terry
'synclock'을 사용할 수 있습니까? http://stackoverflow.com/a/396248/231316 –