我正在尝试通过发送带有 Java Process Runtime 的 CURL 命令来发送 REST 请求,代码如下:
Process p = Runtime.getRuntime().exec("curl -i --user user_name:password -H "Content-Type: application/json" -X PUT url_without_quote -d @/home/user_name/put_content.json");
但是,即使指定了标题,我也收到了 415 不支持的媒体类型。我已经在终端中尝试了上述命令,它适用于 200 返回代码。我还尝试了在 curl 命令中使用相同的选项进行 GET 请求,而没有 PUT 请求的 -d 内容,它返回 200 并获取正确的响应内容。
从某种意义上说,这很奇怪,因为相同的命令在终端中有效,但在运行代码的 java 进程中失败。
您是否遇到过相同的问题或有任何解决方案?
我怀疑是否需要为 PUT REST 请求或">内容类型:应用程序/json">的字符情况指定一些额外的标头?
经过一些试验,以下工作:
Process p = Runtime.getRuntime().exec("curl -i --user user_name:password -H Content-Type:application/json -X PUT url_without_quote -d @/home/user_name/put_content.json");
从其他讨论线程来看,它建议应用程序应遵循":"字符,没有任何空格字符,并且无需指定双引号。
这对我来说现在很好用!感谢以上评论!