输入行太长

输入行太长
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

问题是不是关于行太长,因为你的命令只有 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:no-cache'

因此,'x-swa-token: Atc|MQEBIKSFsFpAwAZc6hHjeAAPfqd...部分将被识别为第一个命令的最后 2 个参数,其输出将被传输到可能不存在的'x-swa-token: Atc命令中MQEBIKSFsFpAwAZc6hHjeAAPfqd...

您需要将单引号改为双引号。但是,由于您在字符串中使用了嵌套的双引号,因此这样做会很麻烦


尽管如此,还是有各种解决方案。在 PowerShell 中'可用于引用字符串,因此你可以完全避免使用过时的 cmd.exe,而是使用 PowerShell 和上述命令原样。较新的 Windows 10 也弃用了 cmd.exe 并默认使用 PowerShell。

无论如何,在 PowerShell 中已经有net.webclient.DownloadString因此您可以直接使用它,无需curl

从版本 17063 开始curl也内置于 Windows 10档案)你可以直接使用它

相关内容