curl --request POST --url https://ship.amazon.in/swaapi/v2/some_id/shipments --header 'cache-control: no-cache' --header 'content-type: application/json' --header 'x-swa-token: Atc|MQEBIKSFsFpAwAZc6hHjeAAPfqdgFxhfSD5vIGW34BJG4nUaHayUtfxBkj_ssIs_46_NhW8QvCbpNha1wgZFBYmrfhCzocI4S7bs5XKi6FUE14wI_aHeVVGAItVkAOlkSJ7C29SXh2iIdcfDWrUv6lRwqY8DIH2BCLkr2N0XNcw8Ecxz-yrM5CeDr5bbYFN06TMRKH8KSumL625kOWfhoTClHuVosne-55ucG9BSOL62EoqMUsHeqKGkmR6G8L2XQRkL4yipUOqGtlT1OiOppf6o8svFJVnuJj9eOLbKGl4HdKVpoA' --data'{"transaction":{"transactionIdentifier":"1234"},"shipmentRequest":{"destination":{"address":{"mailingAddress":{"countryCode":"IN","postalCode":"110034","city":"Surat","addressLine1":"Marutidham","attentionName":"MeghaRajpara"}}},"containers":[{"value":{"value":100,"unit":"INR"},"valueAddedServiceProperties":{"collectOnDeliveryProperties":{"containerCODAmount":{"unit":"INR","value":450},"itemLevelCODAmounts":[{"itemId":"ITEM-1","amount":{"unit":"INR","value":2300}}]}},"identifiers":{"clientRefId":"43f65667-921b-4822-a346-d4c8ac886789","containerReferenceId":"7df1c643-be34-45b7-aac4-04faaad7dc3f"},"physicalAttributes":{"height":{"unit":"CM","value":10},"length":{"unit":"CM","value":10},"width":{"unit":"CM","value":5},"weight":{"unit":"G","value":50}},"itemInfo":[{"unitPrice":{"value":100,"unit":"INR"}}]}],"expectedServiceOffering":{"expectedPromise":{"receiveWindow":{"dateTimeRange":{"start":"2017-04-23T05:05:24.094Z"}}}},"clientReferenceId":"a1a924a3-7cbe-44b1-9a91-f09c1879011f","origin":{"address":{"mailingAddress":{"countryCode":"IN","postalCode":"395006","city":"Surat","addressLine1":"Marutidham","attentionName":"MeghaRajpara"}}},"shippingPurpose":"SALE"}}'

Приведенная выше команда выдает мне следующую ошибку:

Строка ввода слишком длинная.

Как я могу решить это?

1 ответ1

5

Проблема не в слишком длинной строке, потому что ваша команда имеет только 1673 символа, а ограничение составляет 8191 символ для команд, входящих в cmd.exe

На компьютерах под управлением Microsoft Windows XP или новее максимальная длина строки, которую можно использовать в командной строке, составляет 8191 символ. На компьютерах под управлением Microsoft Windows 2000 или Windows NT 4.0 максимальная длина строки, которую можно использовать в командной строке, составляет 2047 символов.

https://support.microsoft.com/en-us/help/830473/command-prompt-cmd.-exe-command-line-string-limitation

Теперь посмотри на свою команду

curl ... --header 'cache-control: no-cache' --header 'content-type: application/json'
--header 'x-swa-token: Atc|MQEBIKSFsFpAwAZc6hHjeAAPfqdgFxhfSD5vIGW34BJG4nUaHayUtfxBkj
_ssIs_46_NhW8QvCbpNha1wgZFBYmrfhCzocI4S7bs5XKi6FUE14wI
_aHeVVGAItVkAOlkSJ7C29SXh2iIdcfDWrUv6lRwqY8DIH2BCLkr2N0XNcw8Ecxz
-yrM5CeDr5bbYFN06TMRKH8KSumL625kOWfhoTClHuVosne-55ucG9BSOL62EoqMU
sHeqKGkmR6G8L2XQRkL4yipUOqGtlT1OiOppf6o8svFJVnuJj9eOLbKGl4HdKVpoA...'

Одинарная кавычка ' не является символом кавычек в Windows, поэтому в отличие от того, что можно ожидать, 'cache-control: no-cache' будет передаваться как 2 отдельных параметра: 'cache-control: and no-cache'

В результате в 'x-swa-token: Atc|MQEBIKSFsFpAwAZc6hHjeAAPfqd... 'x-swa-token: Atc будет распознана как последние 2 параметра первой команды, чей вывод будет передан в команду с именем MQEBIKSFsFpAwAZc6hHjeAAPfqd... которого, вероятно, не существует

Вам нужно изменить одинарные кавычки на двойные. Тем не менее, поскольку вы используете вложенные двойные кавычки внутри строк, это будет затруднительно.


Тем не менее, существуют различные решения. В PowerShell ' можно использовать для цитирования строк, так что вы можете просто избежать устаревшего cmd.exe и использовать PowerShell с вышеуказанной командой как есть. Более новая Windows 10 также не поддерживает cmd.exe и использует PowerShell по умолчанию.

В любом случае в PowerShell уже есть net.webclient.DownloadString так что вы можете использовать его напрямую, устраняя необходимость в curl

Начиная с build 17063, curl также встроен в Windows 10, и вы можете использовать его напрямую

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .