2010-10-18 4 views
8

Я пытаюсь выяснить, как сделать POST в VBA. В идеале я ищу простой рабочий пример, с которым я могу играть. Это то, что у меня есть до сих пор, но я не совсем уверен, что с ним делать. В основном, как выглядит formdata.Http Сообщение в Vba

Function WinHTTPPostRequest(URL, formdata, Boundary) 
    Dim http 

    Set http = CreateObject("MSXML2.XMLHTTP") 

    http.Open "POST", URL, False 

    'Set Content-Type header' 
    http.setRequestHeader "Content-Type", "multipart/form-data; boundary=" + Boundary 

    'Send the form data To URL As POST binary request' 
    http.send formdata 

    'Get a result of the script which has received upload' 
    WinHTTPPostRequest = http.responseText 
End Function 

Edit:

Так я установил поджигатель так, чтобы я мог получить имена объектов для "FormData" (см код). Я бы подумал, что formdata будет выглядеть примерно так: «Form1 = A & Form2 = B». Но он все еще не работает. Любые предложения о том, как я должен делать это лучше?

Редактировать: Так что, похоже, могут быть скрытые поля, которые мне нужно отправить в мой запрос POST.

+0

Загрузить * Fiddler *, чтобы вы могли отлаживать/декодировать HTTP-запросы. Вы можете просто пропустить что-то простое. – AMissico

ответ

4

Чтобы отправить данные формы в формате, который вы предлагаете (т. Е. Идентичен запросу GET), я считаю, что вам нужно установить заголовок Content-Type в «application/x-www-form-urlencoded».

Если вам нужно отправить более сложные данные (например, включая загрузку файлов или другие двоичные данные), возможно, вам лучше настроить Content-Type на «multipart/form-data». Подробная информация о том, как отформатировать тело запроса, выложена в RFC 2388, но вам может быть лучше найти библиотеку, которая сделает это за вас. Это может быть сложно получить форматирование в точности, и нет необходимости изобретать велосипед, если вы не делаете это как опыт обучения.

0

Скачать Fiddler, чтобы вы могли отлаживать/декодировать HTTP-запросы. Вы можете просто пропустить что-то простое.

Кроме того, при поиске по «HTTP POST VBA» в библиотеке MSDN существует множество результатов. (http://social.msdn.microsoft.com/Search/en-US?query=%2BHTTP%20%2BPOST%20%2BVBA%20-stackoverflow%20-social&ac=8). (Кажется, «ошибка», если исключить содержание, поэтому я исключил StackOverflow и социальные результаты в запросе.)

Как представить данные формы с помощью XMLHTTP или ServerXMLHTTP объектов в http://support.microsoft.com/kb/290591, которая использует VBScript, но легко преобразуется к vBA.

Смежные вопросы