首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用JWT -curl将文件上载到框:(26)创建formpost数据失败

无法使用JWT -curl将文件上载到框:(26)创建formpost数据失败
EN

Stack Overflow用户
提问于 2019-07-25 15:16:23
回答 2查看 402关注 0票数 0

我正在使用java中的cURL执行下面的命令。这给我带来了错误--就在Bearer之后的空白后面。

2019-07-25 08:04:09,297 INFO [com.pc.boxapi.BoxApi:198] - curl: (6) Couldn't resolve host 'Ddu9DLiWt2YRWxtsoAxjL0BMMbt9FvOk"'

代码语言:javascript
复制
curlCommand = "curl https://upload.box.com/api/2.0/files/content  -H \"Authorization:Bearer Ddu9DLiWt2YRWxtsoAxjL0BMMbt9FvOk\" -X POST  -F attributes='{\"name\":\"text.txt\",\"parent\":{\"id\":\"69430965158\"}}' -F file=@file.txt\"";

Process process = Runtime.getRuntime().exec(curlCommand);
LOG.info("process {} ", process.getOutputStream().toString());

如果我在BearerDdu9DLiWt2YRWxtsoAxjL0BMMbt9FvOk之间使用正斜杠,我会得到另一个错误-

代码语言:javascript
复制
INFO [com.pc.boxapi.BoxApi:198] - curl: (26) failed creating formpost data

服务器是Linux

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-25 15:43:34

man页面curl表示错误代码26代表Read error. Various reading problems.

如果只打印要执行的命令,就会得到以下结果:

代码语言:javascript
复制
curl https://upload.box.com/api/2.0/files/content  -H "Authorization:Bearer Ddu9DLiWt2YRWxtsoAxjL0BMMbt9FvOk" -X POST  -F attributes='{"name":"text.txt","parent":{"id":"69430965158"}}' -F file=@file.txt"

读取问题可能与-F file=@file.txt"有关。注意文件名末尾的额外"。我很确定你的问题在这里。删除它并确保file.txt的存在。

顺便说一句,如果您需要在Java中发出HTTP请求,您应该使用类似于Apache HttpClient的库。

避免不惜一切代价执行系统命令,这是等待追加的安全问题!

票数 0
EN

Stack Overflow用户

发布于 2019-07-30 08:55:23

根据错误消息Couldn't resolve host 'Ddu9DLiWt2YRWxtsoAxjL0BMMbt9FvOk"',curl将Ddu9DLiWt2YRWxtsoAxjL0BMMbt9FvOk解析为主机名,这意味着它将Authorization:BearerDdu9DLiWt2YRWxtsoAxjL0BMMbt9FvOk作为两个单独的参数接收,而您显然希望将它们作为一个单独的参数。

我建议使用Process.runtime(String[] cmdarray)方法而不是Process.runtime(String cmd)方法,在该方法中,您将命令拆分为多个令牌:

代码语言:javascript
复制
String[] curlCommand = { "curl", "https://upload.box.com/api/2.0/files/content",  
    "-H", "Authorization:Bearer Ddu9DLiWt2YRWxtsoAxjL0BMMbt9FvOk", "-X", "POST", 
    "-F", "attributes={\"name\":\"text.txt\",\"parent\":{\"id\":\"69430965158\"}}",
    "-F", "file=@file.txt"
};
Process.runtime(curlCommand);

还请注意,@file.txt引用是相对的:它依赖于当前工作目录中存在的file.txt文件(除非更改,否则执行java代码的引用)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57205339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档