2017-02-10 9 views
0

Я новичок и очень взволнован о том, чтобы делать вещи прямо с консоли! :)Подача локального файла в качестве параметра для ввода данных для запроса CURL

Сегодня я играл с meaningcloud API для лемматизации и т. Д., И он отлично работает, когда я вводим текст непосредственно в URL как параметр, например txt=here%20my%20text.

Однако при попытке кормить данные из файла, используя параметр doc=, как описано in their docs, я получаю следующий ответ:

{"status":{"code":"200","msg":"Missing required parameter(s) - [txt]", ... 

Документов прочитали, что я могу использовать либо doc, url или txt как параметр для указания источника ввода текста, но кажется, что я делаю что-то неправильно здесь.

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

Вот один пример вызова, что я делал, может быть, кто-то может указать мне на мою ошибку (В реальных вызовов у меня есть ключ API там вместо {my_key_here}!):

curl -K -XPOST "https://api.meaningcloud.com/parser-2.0?key={my_key_here}&of=json&lang=es&doc=Users/Martin/Documents/text.txt" >> output.json 

Я попробовал еще общие ответы here, но получил тот же ответ об ошибке. Мне интересно, является ли это общей ошибкой моей, или она специфична для API.

Спасибо за любые советы!

+1

Параметр '-K' вариант совершенно неправильно там, хотя, как он будет относиться к' -XPOST' в качестве имени файла для читать из ... Вероятно, вы имели в виду нижний регистр '-k'. –

+0

О! Большое спасибо. Да, я скопировал это без проверки! Прочитайте его сейчас: https://curl.haxx.se/docs/manpage.html, и нет необходимости в этом вообще. –

+0

Это все еще не работает, так что там должна быть какая-то другая проблема. –

ответ

0

Я получил его для работы с ответом @Lucas Liu в this thread!

curl -i -F [email protected] "https://etc." 

И подталкивание @Daniel Стенберг помог мне также выяснить мою первоначальную ошибку (от curl manual):

@filename

Это заставит завиток загружать данные из данного файла (включая любые строки ), URL-кодирование этих данных и передача их в POST.

Я передавал свой файл URL как строку - не добавляя символ @. Таким образом, рабочая версия исходного вызова (в API, suggested format) выглядит следующим образом:

curl -XPOST "https://api.meaningcloud.com/parser-2.0?key={my_api_key}&of=json&lang=es&[email protected]/Martin/Documents/text.txt" -o output.json 
+1

... и «-X POST» лучше удалить –

+0

Отлично! Он работает без «-X POST», еще раз спасибо! Я предполагаю, что это потому, что теперь я передаю файл, поэтому нет необходимости использовать POST для более длинных строк, это правильно? –

+0

Нет, это потому, что -F подразумевает выполнение POST, и вы настаиваете на том, что это приведет к ошибкам, когда вы позже подумаете о добавлении '-L' или тому подобного. –