2013-08-07 13 views
5

में पास पैरामीटर http://forums.egullet.org/ की मुख्य खोज बार पर एक साधारण पोस्ट अनुरोध करने का प्रयास कर रहा हूं। (यह एक उदाहरण है, लेकिन मैं एक उपकरण बनाने की कोशिश कर रहा हूं जो कई लोगों के साथ काम करेगा।)वीबीए HTTP पोस्ट अनुरोध

समस्या यह है कि मैं पैरामीटर को ढांचे/स्थानांतरित करने का सही तरीका नहीं समझ सकता सर्वर मेरे अनुरोध को संसाधित करता है। (मुझे एक प्रतिक्रिया मिलती है, लेकिन यह एक पृष्ठ है जो मुझे खोज की कोशिश करने के लिए कहता है, परिणामस्वरूप मुझे ब्राउजर में खोज करते समय मिलता है। तर्क स्ट्रिंग सीधे फायरबग से बाहर खींच लिया गया था, इसलिए मैं काफी हद तक सुनिश्चित करें कि यह सही है। मुझे बस यह धारणा मिलती है कि मैं इसे सही जगह पर नहीं डाल रहा/इसे सही तरीके से व्यवस्थित/कह रहा हूं जो मुझे चाहिए, लेकिन मुझे नहीं पता कि क्या बदलना है। यह ध्यान देने योग्य है कि मेरे पास पहले था संपादित करने में कोई इंटरनेट एक्सप्लोरर वस्तु के डोम द्वारा इस काम के, लेकिन मैं इसे बहुत तेजी से/और अधिक विश्वसनीय। आपकी मदद के लिए धन्यवाद है, क्योंकि XMLHTTP करने के लिए स्विच करने की कोशिश कर रहा हूँ!

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 

उत्तर

5

मैं तुम्हें एक ampersand आप जहां जरूरत है एक प्रश्न चिह्न

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

यह अधिक संक्षिप्त बनाने के लिए और है कि लक्ष्य पृष्ठ के शीर्षक प्राप्त करने के लिए:

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 
संबंधित मुद्दे