2013-08-07 22 views
5

http://forums.egullet.org/ ana arama çubuğunda basit bir posta isteği yapmaya çalışıyorum. (Bu bir örnektir, ancak çok fazla çalışacak bir araç oluşturmaya çalışıyorum.)VBA HTTP İletim İsteğinde Geçiş Parametreleri

Sorun şu ki, parametrelerin yapılandırılması/yerleştirilmesi için doğru yolu anlayamıyorum. sunucu isteğimi işler. (Bir yanıt alıyorum, ama sadece bir tarayıcıda arama yaptığımda elde ettiğim sonuçtan ziyade, aramayı tekrar denememi isteyen bir sayfa. Argüman dizgisi ateş böceğinin dışına doğru çekildi. doğru olduğuna emin olduğumu, doğru yere yerleştirmediğimi/yapmam gerektiğini/yapmam gereken her şeyi söylediğimi, ama neyi değiştireceğimi bilmediğim izlenimini edindim. çok daha hızlı Yardımlarınız için/daha güvenilir. Teşekkür çünkü bu bir internet gezgini nesnenin DOM düzenleyerek çalışma ama XMLHTTP geçmek için çalışıyorum!

Sub httpPost() 
Dim XMLHTTP 
Dim result As String 
Dim argumentString 
argumentString = "?search_term=eggs&search_app=forums" 
Set XMLHTTP = CreateObject("MSXML2.XMLHTTP.6.0") 
XMLHTTP.Open "POST", _ 
    "http://forums.egullet.org/index.php?app=core&module=search&do=search&fromMainBar=1", False 
XMLHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" 
XMLHTTP.setRequestHeader "Content-type", "application/x-www-form-urlencoded" 
XMLHTTP.send argumentString 
result = XMLHTTP.responsetext 
Set XMLHTTP = Nothing 
End Sub 

cevap

5

Ben size sahip bir işareti gerektiğini düşünüyorum Soru Yanıtı göster

argumentString = "&search_term=eggs&search_app=forums" 
0

daha özlü yapabilir ve bu hedef sayfasının başlığını almak için:

Sub httpPost() 
    Dim http As New XMLHTTP60, html As New HTMLDocument 
    Dim post As Object, argstr As String 

    argstr = "type=all&q=eggs" 

    With http 
     .Open "POST", "https://forums.egullet.org/search/?", False 
     .setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" 
     .setRequestHeader "Content-type", "application/x-www-form-urlencoded" 
     .send argstr 
     html.body.innerHTML = .responseText 
    End With 

    For Each post In html.getElementsByClassName("ipsStreamItem_title") 
     With post.getElementsByTagName("a") 
      If .Length Then Row = Row + 1: Cells(Row, 1) = .Item(0).innerText 
     End With 
    Next post 
End Sub 
İlgili konular