ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

[¤À¨É] ¨Ï¥Î XMLHTTP + ADODB.Stream ¬d¸ß«O¤áªÑÅv¤À´²ªí

[¤À¨É] ¨Ï¥Î XMLHTTP + ADODB.Stream ¬d¸ß«O¤áªÑÅv¤À´²ªí

¥»©«³Ì«á¥Ñ ­ã´£³¡ªL ©ó 2015-11-9 21:18 ½s¿è

¨Ï¥Î XMLHTTP + ADODB.Stream ¬d¸ß«O¤áªÑÅv¤À´²ªí
¡@
¡ÕÃD¥Ñ¡Ö¡@
¨ú±oºô­¶­ì©l½Xªº¸ê®Æ
http://forum.twbts.com/thread-15528-1-1.html
¡@
ÁöµM§@¤F¦^ÂСA¯S¦Aªá­Ó®É¶¡°µ­ÓMEMO¡A
°£¤F¬°¦Û¤v°µ­Ó³Æ§Ñ¿ý¡A¤]§Æ±æÅýºô¤Í¦h­Ó°Ñ¦Ò³B¡C
¡@
¡Õµù¤@¡Ö¡@
µLªk¨Ï¥Î.responseText¨ú±o­ì©l½X¤å¦r¡A»F¦]¥i¯à¬°ºô­¶½s½XªºÃö«Y¡A
¨ú¥Xªº¤å¦r¬°¡e¶Ã½X¡f¡A¬G³y¦¨µ{¦¡ªº¿ù»~¤¤Â_¡F
¦]¦¹­É¥Î ADODB.Stream ¬°¤¤¤¶¡A¥H¡e¤G¶i¦ì¡f¤è¦¡¨ú¥X­ì©l½X¡A
¥i¥Î¡eXMLHTTP¡@ADODB.Stream¡f¬°ÃöÁä¦r GOOGLE ¤@¤U¡A
¦³¬Û·í¦hªº¸ê®Æ¥i°Ñ¦Ò¡A­Ó¤H¤]¬O¤@ª¾¥b¸Ñ¡]ª¾¨äµM¡^¦Ó¤w¡A
¬°§K°µ¿ù»~ªº¸ÑÄÀ¡A½Ð¦Û¦æ¥h±´¯Á¡A
¤]´Á«Ý¦³¤ßªº±M®a¨Ó¸É¥R¯q²³¡C¡@
¡@
¡Õµù¤G¡Ö¡@
¥»½d¨Ò¥D­nºô§}¬°¡Ghttp://www.tdcc.com.tw/smWeb/QryStock.jsp¡A
XMLHTTP ¨Ã¥¼¹ïºô­¶¡e±±¥ó¡f°µ¬d¸ß°Ñ¼Æªº¿é¤J¾Þ§@¡A
¦]¦¹¡Aµ{¦¡½X¥²¶·§t¦³¡e¬d¸ß°Ñ¼Æ¡f¡A¨Ò¦p¡G¡e¤é´Á¡f¡eªÑ²¼¥N½X¡f¡A
¸g¦h¦¸À|¸Õ¡A¤£±o¨äªù¦Ó¤J¡A«÷¥b¤Ñ¤]¥u¬O¡G
SCA_DATE=¤é´Á&StockNo=ªÑ²¼¥N½X¡ã¡ã¦ý¦æ¤£³q¡I¡I¡I
«á·Q¨ì¶WªO¦³µª¹L¦¹¬ÛÃöÃD¡A§ä¤F¤@¤U¡A¦b³o¸Ì¡G
http://forum.twbts.com/thread-15067-1-7.html
¡@
ºô§}§¹¾ã«áºó¦p¤U¡G
SCA_DATE=¤é´Á&SqlMethod=StockNo&StockNo=ªÑ²¼¥N½X&StockName=&sub=%ACd%B8%DF
¡@
³o¦ê¤å¦r«ç¨Óªº¡H´Á«Ý¶WªOªº¶}¥Ü¡ã¡ã¡@
¡@
¡Õµù¤T¡Ö¡@
XMLHTTP¡epost¡Dget¡fªº®t²§¡I
¢ï¢í¢ü¡G²Ä¤@¦¸°õ¦æ¡AÄ´¦p¦V«È¤á­n¨D¶Ç¯u¡A¶·µ¥¤å¥ó¶Ç°e¡A©Ò¥Hªá¨Ç®É¶¡¡F
¡@¡@¡@¡@²Ä¤G¦¸¥H«áªº°õ¦æ¡A¦]¤å¥ó¤w¦s¦b¡A´Nª½±µ¨ú¥Î¡A®É¶¡§Ö«Ü¦h¡F
¡@¡@¡@¡@¦ý¨º¬O¡e¸ê®Æ¡f¡A¥i¯à»P³Ì·sªº¥¿¥»¦³®t²§¡C
¢ø¢÷¢û¢ü«h¨C¦¸³£­n¨D¶Ç°e¡A¥H¨ú±o³Ì·sªº¸ê®Æ¡C
¡@
¥t¥~¥i¥H¦bºô§}«á­±¥[¤J¶Ã¼Æ¡A¨Ò¦p¡G
URL = "http://www.tdcc.com.tw/smWeb/QryStock.jsp" & "?" & Rnd
¨Ï¨C¦¸³sµ²ªººô§}µø¬°¤£¦P¡A¤]¥i¹F¨ì¨ú±o³Ì·s¤º®eªº¥Øªº¡A¦ý¨Ã«D©Ò¦³ºô§}¥i¦p¦¹¡C
¡@
¡Õµù¥|¡Ö¡@
¤@¯ë­Y¿é¤J¿ù»~ªººô§}¡AÀ³·|¶Ç¦^¿ù»~¡A©Î¶Ç¦^¥¼´Nºü°T®§¡A
¦ý¦³®Éºô­¶Áö¥¼¶i¤J«ü©wªº¥Øªº­¶¡A¦ý·|¦Û°Ê¸õ¦Ü¨ä¥D­¶©Î­º­¶¡A
¦¹®É XMLHTTP ¤´µM¥i¥H¥¿±`¶Ç¦^¤å¦r¡A¥u¬O¨Ã«D©Ò­nªº¤º®e¡A
©Ò¥HÁÙ¬O­nª`·N¡C
¡@
¡Õ«á°O¡Ö¡@
¹ïºô­¶¦s¨ú¤´¬Oªù¥~¤H¡A¶È¦p¤W²LÁ¡ª`¤å¡A¶¡©Î¦³»~¦³º|¡A½Ð¦Û¦æ°Ñ°u¡F
¥H¤Uªºµ{¦¡½X¤Î½d¨Ò¤]¶È¨Ñ°Ñ¦Ò®M¥Î¡A®¤¤£¬°ºô¤Í­Ó§O´£¨Ñ«È»s­×§ï¡F
§Æ±æ¸ô¹L±M®a¤£§[«ü¾É¡A¬°¦¹©«º|»~¤§³B°µ§óºë½Tªº¤j¸É©«¡AÁÂÁ¡I¡@

¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×
Sub ¨ú¥X¤é´Á²M³æ()
Dim XML, URL$, TT
[A:A].ClearContents
URL = "http://www.tdcc.com.tw/smWeb/QryStock.jsp" & "?" & Rnd
Set XML = CreateObject("Microsoft.XMLHTTP")
XML.Open "post", URL, False
XML.send
If XML.Status = 200 Then
¡@With CreateObject("ADODB.Stream")
¡@¡@¡@¡@.Open
¡@¡@¡@¡@.Type = 1
¡@¡@¡@¡@.Write XML.ResponseBody
¡@¡@¡@¡@.Position = 0
¡@¡@¡@¡@.Type = 2
¡@¡@¡@¡@.Charset = "BIG5"
¡@¡@¡@¡@TT = .ReadText
¡@¡@¡@¡@.Close
¡@End With
¡@TT = Replace(TT, "</option><option >", "_")
¡@TT = Split(TT, "</option>")(0)
¡@TT = Split(TT, "<option >")(1)
¡@TT = Split(TT, "_")
¡@[A1].Resize(UBound(TT) + 1) = Application.Transpose(TT)
End If
Set XML = Nothing
End Sub

¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×
Sub «O¤áªÑÅv¤À´²ªí¬d¸ß()
Dim XML, URL$, TT, vDate, vNo, vFile$, X, PP$
vDate = [F1]: vNo = [F2]: vFile = vNo & "_" & vDate & ".csv"
URL = "http://www.tdcc.com.tw/smWeb/QryStock.jsp?SCA_DATE=" & vDate & _
¡@¡@¡@"&SqlMethod=StockNo&StockNo=" & vNo & "&StockName=&sub=%ACd%B8%DF"
Set XML = CreateObject("Microsoft.XMLHTTP")
XML.Open "post", URL, False
XML.send
If XML.Status = 200 Then
¡@With CreateObject("ADODB.Stream")
¡@¡@¡@¡@.Open
¡@¡@¡@¡@.Type = 1
¡@¡@¡@¡@.Write XML.ResponseBody
        
¡@¡@¡@¡@.Position = 0
¡@¡@¡@¡@.Type = 2
¡@¡@¡@¡@.Charset = "BIG5"
¡@¡@¡@¡@TT = .ReadText
¡@¡@¡@¡@.Close
        
¡@¡@¡@¡@PP = "<table cellspacing=0 cellpadding=0 width=""100%"" border=0>"
¡@¡@¡@¡@X = Split(TT, PP)
¡@¡@¡@¡@If UBound(X) < 3 Then Exit Sub
¡@¡@¡@¡@TT = Replace(X(3) & PP & X(4), "¶°«O¤áªÑÅv¤À´²ªí", "")
¡@
¡@¡@¡@¡@.Open
¡@¡@¡@¡@.Writetext TT
¡@¡@¡@¡@.SaveToFile ThisWorkbook.Path & "\" & vFile, 2
¡@¡@¡@¡@.Close
¡@¡@¡@¡@Beep
¡@End With
End If
Set XML = Nothing
End Sub
¡@
¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×¡×
ªþ¥ó¤U¸ü¡G
20151108-01(«O¤áªÑÅv¤À´²ªí¬d¸ß).rar (10.48 KB)

1

µû¤À¤H¼Æ

·P®¦ªº¤ß......(¦b³Â»¶®a±Ú°Q½×°Ï.¥Î¤ß¾Ç²ß·|¦³¶i¨Bªº)
¦ý¸ê·½µL­­,«á´©¦³­­,  ¤@¤Ñ1¤¸ªºÃÙ§U,¤H¤H¦³¯à¤O.

TOP

¥»©«³Ì«á¥Ñ stillfish00 ©ó 2015-11-12 11:00 ½s¿è

¦^´_ 1# ­ã´£³¡ªL
¦Û¤v¤]¹ïºô­¶Â^¨ú¦Û¦æºN¯Á¤@¬q®É¶¡¡A¥H¤U¬O­Ó¤H¨£¸Ñ´£¨Ñ°Ñ¦Ò:
­º¥ý¡A§Ú­Ì­n»P(ºô­¶)¦øªA¾¹·¾³q¡A¬O³z¹L¹ïÂsÄý¾¹ªº¾Þ§@(¨Ò¦p­«·s¾ã²z©Îºô­¶¤Wªº°e¥X«ö¶s)
¨Óµo¥X"½Ð¨D"(request)«Ê¥]¡A¸g¥Ñºô¸ô¶Çµ¹¦øªA¾¹¡A
¦øªA¾¹¦A¸g¥Ñºô¸ôªð¦^"ÅTÀ³"(response)µ¹ÂsÄý¾¹¡C

³o­Ó"½Ð¨D"«Ê¥]¤¤¥]§t¤F url , method , status , header , body µ¥µ¥
GET©MPOST´N¬O½Ð¨Dªº¤èªk(method)¤¤³Ì±`¨£ªº¨âºØ¡A
³Ì¤j¤£¦Pªº¦a¤è¦b©ó¡G
GET¬Oª½±µ§â­n¶Ç»¼ªº°Ñ¼Æªþ¥[¦burl¦r¦ê«á¤è
POST¬O§â­n¶Ç»¼ªº°Ñ¼Æ©ñ¦bbody¡C

°²³]
    sURL = "http://www.tdcc.com.tw/smWeb/QryStock.jsp"
    sArg = "SCA_DATE=20151106&SqlMethod=StockNo&StockNo=1101&StockName=&sub=¬d¸ß"
    sEncodeArg = UrlEncode(sArg)     
    'UrlEncode : ¦Û­qFunction¡A
    '½s½X§¹ sEncodeArg = "SCA_DATE=20151106&SqlMethod=StockNo&StockNo=1101&StockName=&sub=%ACd%B8%DF"

GETªþ¥[ªº¤å¦r­n¸g¹LUrl Encode
POST©ñ¨ìbodyªº¤º®e¥i¿ï¾Ü¤£¦P½s½X¤è¦¡¡A¦ý­n¦bheader¤¤»¡©ú
©Ò¥HXML³q±`·|³o¼Ë¼g:
  1. 'GET
  2. .Open "GET" , sURL & "?" & sEncodeArg
  3. .send
½Æ»s¥N½X
  1. 'POST
  2. .Open "POST" , sURL
  3. .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
  4. .setRequestHeader "Content-Length", Len(sEncodeArg)
  5. .send (sEncodeArg)
½Æ»s¥N½X
1. ª©¥D´£¨ìªº¨ú¨ì¸ê®Æ¡AÀ³¬O½w¦s(cacheªºÃö«Y)
    ¥i¦Ò¼{¤W­zGETªºsend«e¥[¤W
        .setRequestHeader "Pragma", "no-cache"
    ©Î
        .setRequestHeader "Cache-Control", "no-cache"
    §i¶Dºô¸ô¤¤ªº¸`ÂI(¦pproxy), ¤£­n¥Î§A¦Û¤vªºcache¸ê®Æªð¦^µ¹§Ú
    URL¥[¶Ã¼Æ¤]¬OÃþ¦ü¹D²z¡A¦]¬°URLÅܤF¤£®e©ö¦³¬Û¦PURLªºcache¸ê®Æ
    (¦ý¶Ã¼Æ¨ì¦P¤@­Ó­ÈÁÙ¬O¦³¾÷·|¨ú¨ìªº)

2. URL Encode  Function¡Aºô¸ô¤W§ä¨ìªº¤@¯ëÀ³¸Ó¦h¬O for "utf-8"ªº¡A
µLªk§â "sub=¬d¸ß" Âন "sub=%ACd%B8%DF"  (©Ò¥H·íªì¦³¤H°Ýchrome¬°¦óµLªkdecode)
http://www.mytju.com/classCode/tools/urlencode_big5.asp
³oºô¯¸¦³½u¤Wªº¡A¥i¥Hª¾¹Dfor "big5" url encode ªºµ²ªG
¦ý¤£ª¾¹D½s½XÅÞ¿è¡A¤£¦n°µ¦¨¦Û©wªº function
1

µû¤À¤H¼Æ

ªí¹F¤£²M¡BÃD·N¤£©ú½T¡B¨SªþÀɮ׮榡¡B¨S¦³°Q½×°ÝÃDªººA«×~~~~~~¥H¤W·R²ö¯à§U¡C

TOP

¥»©«³Ì«á¥Ñ stillfish00 ©ó 2015-11-13 18:25 ½s¿è

¦^´_ 3# stillfish00
«÷«÷´ê´ê±À¾É¥X¨Óªº½s½XÅÞ¿è¡A­Y¦³µo²{¿ù»~½Ð«üÂI¤U¡AÁÂÁ¡C
  1. Function UrlEncode_BIG5(s As String) As String
  2.     Dim c As Integer
  3.     Dim hiByte As Byte, loByte As Byte
  4.     Dim ar
  5.    
  6.     For i = 1 To Len(s)
  7.         c = Asc(Mid(s, i, 1))
  8.         hiByte = (c And &HFF00&) / &H100
  9.         loByte = c And &HFF&
  10.         If hiByte = 0 Then ar = Array(loByte) Else ar = Array(hiByte, loByte)
  11.         
  12.         For Each x In ar
  13.             If (x >= &H30 And x <= &H39) Or _
  14.                 (x >= &H41 And x <= &H5A) Or _
  15.                 (x >= &H61 And x <= &H7A) Then
  16.                 UrlEncode_BIG5 = UrlEncode_BIG5 & Chr(x)
  17.             Else
  18.                 UrlEncode_BIG5 = UrlEncode_BIG5 & "%" & Hex(x)
  19.             End If
  20.         Next
  21.     Next
  22. End Function
½Æ»s¥N½X
UrlEncode_BIG5("¥xªd") => "%A5x%AAd"
1

µû¤À¤H¼Æ

    • ­ã´£³¡ªL: ¬Ý¨ÓÁö²³æ, ¤£®e©ö§r! ¦¬¤U¤F, ÁÂÁÂ!ª÷¿ú + 5
ªí¹F¤£²M¡BÃD·N¤£©ú½T¡B¨SªþÀɮ׮榡¡B¨S¦³°Q½×°ÝÃDªººA«×~~~~~~¥H¤W·R²ö¯à§U¡C

TOP

¦^´_ 4# stillfish00


=UrlEncode_BIG5("¥xªd") ¡÷ "%A5x%AAd" ¡@ª½±µÀx¦s®æ¤½¦¡§Y±o¡A¦n¥Î¡I

TOP

¦^´_ 5# ­ã´£³¡ªL
°Ñ¦Òstillfish00¤j¤jªº³W«h¼gªº¡A´£¨Ñ¤£¤@¼Ëªº¼gªk
¨S¦³¤ñ¹ï«Ü¦h¦r¡A¦³¼g¿ùªº¦a¤è«ü¾É¤@¤U
  1. Function Urlbig5(Ub5 As String) As String  'uniÂàbig5
  2. Dim a() As Byte: a = StrConv(Ub5, 128)
  3. For I = 0 To UBound(a)
  4.     If Chr(a(I)) Like "[A-Za-z0-9]" Then  
  5.         Urlbig5 = Urlbig5 & Chr(a(I))
  6.     Else
  7.         Urlbig5 = Urlbig5 & "%" & Hex(a(I))
  8.     End If
  9. Next I
  10. End Function

  11. Function UrlUto8x(Uu As String) As String  'uniÂàutf-8
  12. With CreateObject("ADODB.Stream")
  13.     .Type = 2
  14.     .Charset = "utf-8"
  15.     .Open
  16.     .writetext Uu '¤º®e
  17.     .Position = 0
  18.     .Type = 1
  19.     Dim ax() As Byte: ax = .read
  20.     .Close
  21. End With

  22. For I = 3 To UBound(ax) '«O¯dBOM 3§ï1
  23.     UrlUto8x = UrlUto8x & "%" & Hex(ax(I))
  24. Next I
  25. End Function
½Æ»s¥N½X
1

µû¤À¤H¼Æ

    • ­ã´£³¡ªL: »Pstillfish00¤j¤j¤£¦Pªº¼gªk¨Ó¹ï·Ó, §ó®e©ö ...ª÷¿ú + 5

TOP

¦^´_ 6# no3-taco

¹ï¦r½X½s½Xªºª¾ÃѨ䣥R¤À, ³»¦h­n¥Î®É¤Wºô§ä²{¦¨ªº, ¯à®M«h®M,
¤@¯ë¤½¥q¸ê®ÆÀ³¥Î¤W,  ¥Îªº¾÷·|¨Ã¤£¦h!

¶Q¸Ñ¤Îstillfish00¤j¤jªºµ{¦¡³£¬O¥¿³W, ÁÂÁ´£¨Ñ¦³¥Îªºª¾ÃÑ~

TOP

        ÀR«ä¦Û¦b : ¯u¥¿ªº·R¤ß¡A¬O·ÓÅU¦n¦Û¤vªº³oÁû¤ß¡C
ªð¦^¦Cªí ¤W¤@¥DÃD