A linha de entrada é muito longa

-1
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"}}'

O comando acima me fornece o seguinte erro:

The input line is too long.

Como posso resolver isso?

    
por user721009 22.04.2017 / 09:06

1 resposta

3

O problema é não sobre a linha por muito tempo, porque seu comando tem apenas 1673 caracteres e o limite é 8191 caracteres para comandos que entram em cmd.exe

On computers running Microsoft Windows XP or later, the maximum length of the string that you can use at the command prompt is 8191 characters. On computers running Microsoft Windows 2000 or Windows NT 4.0, the maximum length of the string that you can use at the command prompt is 2047 characters.

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

Agora olhe para o seu comando

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

Aspas simples ' não é um símbolo de cotação no Windows , por isso, ao contrário do que se poderia esperar, 'cache-control: no-cache' será ser passado como 2 parâmetros separados : 'cache-control: e no-cache'

Como resultado, em 'x-swa-token: Atc|MQEBIKSFsFpAwAZc6hHjeAAPfqd... , a parte 'x-swa-token: Atc será reconhecida como os dois últimos parâmetros do primeiro comando, cuja saída será canalizada para um comando chamado MQEBIKSFsFpAwAZc6hHjeAAPfqd... , que provavelmente não existe

Você precisa alterar aspas simples para aspas duplas. No entanto, como você está usando aspas duplas dentro das strings, fazer isso seria uma dor

No entanto, existem várias soluções. No PowerShell ' pode ser usado para citar strings , para que você possa evitar completamente o cmd.exe obsoleto e usar o PowerShell com o comando como-é . O Windows 10 mais recente também descarta o cmd.exe e usa o PowerShell por padrão.

De qualquer forma no PowerShell, já existe net.webclient.DownloadString para que você possa usá-lo diretamente, eliminando a necessidade de curl

Desde a compilação 17063 em diante curl is também embutido no Windows 10 e você pode usá-lo diretamente

    
por 22.04.2017 / 13:20

Tags