Unix cURL POST для конкретной переменной, используя содержимое файла - PullRequest
6 голосов
/ 20 сентября 2011

Я искал этот ответ, но не нашел ничего, что работает или полностью соответствует моей проблеме.

При использовании Unix cURL мне нужно POST пару ключ / val на сервер.Ключом будет «MAC», а содержимое файла MAC-адресов, разделенных символом новой строки, будет ЗНАЧЕНИЕМ для этого POST.

Я пробовал:

curl -d @filename <a href="http://targetaddress.com" rel="nofollow">http://targetaddress.com</a>, но когдацель получает входящий POST, переменная POST пуста.(PHP получает).

Я видел другие формы curl, упомянутые на этом сайте, используя --url-encode, который говорит, что это не допустимый параметр curl в моей системе ...

Как вы POST содержимое файла в качестве значения для конкретного ключа в POST с помощью UNIX cURL?

1 Ответ

4 голосов
/ 29 сентября 2011

В соответствии с man-страницей curl -d аналогично --data-ascii. Чтобы отправить данные в двоичном виде, используйте --data-binary, а для публикации с URL-кодировкой используйте --data-urlencode. Так как ваш файл не закодирован по URL, если вы хотите отправить его, используйте закодированное URL:

curl --data-urlencode @file http://example.com

Если ваш файл содержит что-то вроде:

00:0f:1f:64:7d:ff
00:0f:1f:64:7d:ff
00:0f:1f:64:7d:ff

это приведет к тому, что запрос POST получит что-то вроде:

POST / HTTP/1.1
User-Agent: curl/7.19.5 (i486-pc-linux-gnu) libcurl/7.19.5 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.15
Host: example.com
Accept: */*
Content-Length: 90
Content-Type: application/x-www-form-urlencoded

00%3A0f%3A1f%3A64%3A7d%3Aff%0A00%3A0f%3A1f%3A64%3A7d%3Aff%0A00%3A0f%3A1f%3A64%3A7d%3Aff%0A

Если вы хотите добавить имя, вы можете использовать многочастную форму, кодирующую что-то вроде:

curl -F MACS=@file http://example.com

или

curl -F MACS=<file http://example.com
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...