2013-08-07 3 views
5

http://forums.egullet.org/의 기본 검색 창에서 간단한 게시물 요청을하려고합니다. (이 한 가지 예이지만 많은 도구와 함께 사용할 수있는 도구를 만들려고 노력하고 있습니다.)VBA HTTP 전달 요청 매개 변수 전달 요청

문제는 내가 매개 변수를 구조화/배치하는 올바른 방법을 찾지 못하는 것입니다. 서버가 내 요청을 처리합니다. (나는 응답을 얻지 만, 브라우저에서 검색을 수행 할 때 얻는 결과가 아니라 검색을 다시 시도하도록 요청하는 페이지 일뿐입니다. 인수 문자열은 방화범 끈에서 곧바로 잡아 당겨서 상당히 공정합니다. 그것이 맞다는 것을 나는 알았어. 나는 그것이 올바른 위치에 놓고 있지 않다는 인상을 받았다. 올바르게 구조화하고 필요한 모든 것을 말하지만, 나는 무엇을 바꾸어야할지 모른다. 내가 전에 가지고 있었던 것을 주목할 가치가있다. 훨씬 더 빨리 도움을/더 신뢰할. 감사합니다 때문에이 인터넷 익스플로러 개체의 DOM을 편집하여 작업,하지만 내가 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

난 당신이 당신이 앰퍼샌드 필요가 있다고 생각 물음표

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