在Curl POST中,是否可以将文件与JSONObject一起发送



我应该首先说我是Curl/backend/server方面的新手。我有一个在安卓应用程序中运行的本地服务器。当设备通过电缆连接到我的机器时,我可以使用Curl POST到该服务器。我需要在Curl POST中发送一个.vcf文件和一些参数。这可能吗?目前,我只发送文件。这是我的POST:

curl  -X POST  -i  -F parametername=@/Users/mymachine/Desktop/file.vcf localhost:5000

这就是我在安卓应用程序中运行的服务器上检索它的方式

val inputStream = exchange.requestBody
try {
val inputAsString = inputStream.bufferedReader().use { it.readText() }
Timber.d("Received a POST $inputAsString")
} catch (e: Exception) {
Timber.e("Error while attempting to parse server response ${e.message}")
}

我按照以下示例创建了本地服务器:https://medium.com/hacktive-devs/creating-a-local-http-server-on-android-49831fbad9ca

是否可以将我发送的文件包装成JSONObject并添加更多字段?我想要的是这样的东西:

curl  -X POST  -i  -F {"vcf_file":"parametername=@/Users/mymachine/Desktop/file.vcf", "name":"Jhon", "surname":"Doe"} localhost:5000

如果不可能将所有内容都包装在JSONObject中。。。最好的方法是什么?提前谢谢!

是的,我认为只要你托管了你的api/文件,你就可以很容易地获得它们的URL并将它们放在json中。但是,例如,如果你想进行上传,你应该进行一个多部分的请求。改装肯定会对你有很大帮助,这里有一些链接:

https://square.github.io/retrofit/

https://futurestud.io/tutorials/retrofit-2-adding-customizing-the-gson-converter

https://futurestud.io/tutorials/retrofit-2-how-to-upload-files-to-server

我做了更多的调查,在这里找到了答案

使用curl命令行发送/发布xml文件

我的Curl帖子现在看起来是这样的:

curl -X POST --form details='{"bar_test":"bar", "foo": "bar"}' --form  parametername=@/Users/myusername/Desktop/test.vcf  localhost:5000

最新更新