mysql — MSXML2.XMLHTTP отправляет данные в скрипт PHP

Я искал вариант для отправки данных, прочитанных из прикрепленного файла в сообщении Outlook, непосредственно в сценарий PHP, который затем вставит дату в хорошую базу данных MySQL.
Извлечение файла и разделение данных все в порядке, но вот хитрость …

Из Интернета (ВотЯ нашел хороший пост от Джереми Слэйда, которому удалось отправить некоторые данные в cgi scipt, все хорошо.

Итак, насколько я умён, я думал, что смогу переписать это для работы со скриптом PHP.
Но затем работы прекратились.

Я сократил код до фрагмента ниже;

Sub TestURL()

Set xhr = CreateObject("MSXML2.XMLHTTP")
URL = "http://somedomain.com/php/test.php"
data = "someVariable=Test"
With xhr

.Open "POST", URL, False
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded".Send data

End WithEnd Sub

Теоретически это должно открыть запрос MSXML2.XMLHTTP по указанному URL-адресу и отправить любые данные с ним в сценарий.

Забавно, скрипт называется, но данные не передаются?

Я попытался установить для PHP-сценария значение $ _GET и $ _POST для элемента [someVariable], но ни на что нет ответа?
Когда я установил PHP на $ _GET, я сопоставил объект VBA MSXML2.XMLHTTP с «GET», и наоборот …

Я попытался передать переменную data в качестве аргумента функции .send, включив ее в скобки
то есть

   .send (data)

Но это тоже не работает …

Я немного растерялся, потому что скрипт вызывается, в таблицу добавляется дата, но фактической передачи «отправленных» данных нет.

Я попытался соединить строку данных с URL-адресом, который передается объекту HTTP, по сути передавая URL-адрес «GET» объекту HTTP.
то есть

    URL = URL & "?" & data

но безрезультатно … 🙁

Сценарий php работает сам по себе, если я передаю данные непосредственно из браузера
то есть

   http://somedomain.com/php/test.php?someVariable=Test

данные правильно добавлены и переменная читается …

Могут ли некоторые более просвещенные духи вести меня в правильном направлении?

20141016 ********** ОБНОВЛЕНИЕ **********

Хорошо, при копании в вещах, которые я обнаружил, есть также возможность ссылаться на объект XmlHttp как «Microsoft.XmlHttp»?

Достаточно забавно, когда устанавливаешь объект таким образом,
то есть

    Set xhr = CreateObject("Microsoft.XMLHTTP")

Код работает, и данные добавляются в таблицу, а .responsText — это сообщение об успехе.

Тем не менее, если я вернусь к исходному коду, я получу сообщение об ошибке PHP, сообщающее, что в моем синтаксисе PHP есть ошибка ?? Это будет означать, что фактические «данные», которые отправляются, отличаются между использованием «MSXML2.XMLHTTP» и использованием «Microsoft.XMLHTTP» ???

Пытались найти разницу между ними в Интернете, но не можете найти ни одного поста, который бы дал мне полное понимание предмета?

Несмотря на то, что мой код теперь работает, у меня все еще есть беспокоящий вопрос о непонимании разницы между ними, и я был бы признателен за ответ от того, кто это делает 🙂 Поскольку у меня сейчас есть код, который работает, но не понимаю, почему оно работает…:-)
Или mroeover не понимает, почему опция «MSXML2» не работает …


Очень признателен,

С наилучшими пожеланиями

Мартейн

0

Решение

Это не совсем ответ, а скорее комментарий, так как мне не хватает репутации, чтобы комментировать.

Проблема может быть проанализирована с помощью обманщик который предоставляет подробную информацию о запросах и ответах. Я проверил тот же код, что и ваш, в моей системе с объектами MSXML2.XMLHTTP и Mirosoft.XMLHTTP и не нашел различий в запросах. Они оба передали тело запроса POST, содержащее someVariable=Test на URL http://somedomain.com/php/test.php,

Вот необработанный запрос POST в обоих случаях:

POST http://somedomain.com/php/test.php HTTP/1.1
Accept: */*
Accept-Language: en-us
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/5.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; MS-RTC LM 8)
Host: somedomain.com
Content-Length: 17
Proxy-Connection: Keep-Alive
Pragma: no-cache

someVariable=Test

И ответ от образца URL предоставлен:

HTTP/1.1 405 Method Not Allowed
Server: nginx/1.7.6
Date: Thu, 08 Jan 2015 15:23:58 GMT
Content-Type: text/html
via: HTTP/1.1 proxy226
Connection: close

<html>
<head><title>405 Not Allowed</title></head>
<body bgcolor="white">
<center><h1>405 Not Allowed</h1></center>
<hr><center>nginx/1.7.6</center>
</body>
</html>
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->

Один из вопросов здесь заключается в том, ожидает ли рассматриваемый веб-сервер дальнейших данных посредством заголовков (User-Agent, Referer, Cookies и т. Д.) Или как часть тела запроса (могут быть дополнительные элементы ввода, которые являются частью вебформа)?

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]