2009-03-30 1 views

ответ

3

Вам необходимо передать переменные post в качестве содержимого запроса на отправку. Наиболее распространенным способом является application/x-www-form-urlencoded, хотя multipart/form-data может использоваться, если вам нужно выполнить загрузку файлов; см. here для получения подробной информации о кодировках.

Чтобы передать информацию в запрос POST с использованием application/x-www-form-urlencoded, вам необходимо передать это как тип контента, а строку запроса с кодировкой url в качестве содержимого. Нечто подобное должно работать:

(thttp:http-post "http://example.com/submit-form" "application/x-www-form-urlencoded" 
       "foo=bar&baz=quux") 

Если вам нужно бежать строки, которые будут переданы в качестве ключей или значений для запросов POST, то вы можете использовать escape-url-query, чтобы избежать их, чтобы безопасно передать в URL -кодированный корпус:

(thttp:http-post "http://example.com/submit-form" "application/x-www-form-urlencoded" 
       (format nil "foo=~a&bar=~a" (thttp:escape-url-query foo) 
              (thttp:escape-url-query bar)))) 
1

Вы должны кодировать тело POST в виде строки. См. Например, http://en.wikipedia.org/wiki/POST_(HTTP). Чтобы создать поток символов из строки, используйте команду from-input-from-string или make-string-stream.