2013-10-04 2 views
7

Каков самый простой способ отправки HTTP-сообщений POST и получения ответа (например, в формате XML) с использованием только Rebol3?Как отправлять запросы HTTP POST с использованием только Rebol3

Есть ли эквивалент использования read/custom в Rebol2, как это делается в этом вопросе?

How to send an HTTP post with a custom header using REBOL

И где я должен быть donwnloading моих двоичных файлов Rebol3 из? Я не нашел много документации по этому вопросу ...

+1

Я не знаю ответа, но в какой-то момент я обнаружил, что если вы используете WRITE на 'HTTP: //' -стиль URL, то он автоматически повернул в ПОСТ для вас ... это круто. – HostileFork

ответ

6

В документации по адресу Ports: Synchronous and Asynchronous Operations показано, как использовать как GET, так и POST. Подводя итог:

Поведение по умолчанию заключается в том, чтобы считать, что данные для сообщений следует рассматривать как application/x-www-form-urlencoded. (Если вы хотите, чтобы закодировать блок обычных данных Rebol; в этот формат, см %altwebform.r)

result: write http://www.rebol.com/cgi-bin/updata.r data 

Если вам нужен пользовательский заголовок, то вместо того, чтобы передать строку, которую нужно передать блок. Начните его с СЛОВА! post с последующим блоком Rebol-отформатированных пар ключ/значение, а затем ваши данные:

result: write http://www.rebol.com/cgi-bin/updata.r compose [ 
    post [ 
     Content-type: "text/x-rebol" 
     ;-- other fields here 
    ] 
    (data) 
] 

Результат будет в двоичном виде! и может быть преобразован в строку! для анализа любого XML или любого другого.

Где я должен загружать свои бинарные файлы Rebol3?

Вы должны загрузить исполняемые файлы из http://www.rebolsource.net/

+0

Большое спасибо, Грэм. Протестировано в офисе с помощью реальных веб-сервисов SOAP. Удивительно, как это просто! – dreamyToto

+0

Это также работает в Rebol 2 '' 'read/custom url compose [post (d) [Content-Type:" text/xml "]]' '' Обратите внимание, что '' 'read/custom url compose [post (d) header [Content-Type: "text/xml"]] '' 'не работает. – endo64

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