【发布时间】:2016-12-11 21:29:27
【问题描述】:
我是堆栈溢出的新手。希望我问的问题正确。
我必须在 Java 中转换下面的命令。有了这个,我还必须在 multipart/form-data 中将位图上传到服务器。我使用 http urlconnection 尝试过,但我不断收到 400 Bad Request 错误。我不确定 curl 命令中使用的语法以及如何在 java 中进行转换。任何帮助将不胜感激。
curl -X POST 'https://my.craftar.net/api/v0/image/?api_key=123456789abcdefghijk123456789abcdefghijk'
-F "item=/api/v0/item/4fe672886ec142f6ab6d72d54acf046f/"
-F "file=@back_cover.jpg"
您可以查看链接here 以获得任何说明。
这是我到目前为止所尝试的:
private String webAddressToPost = "https://my.craftar.net/api/v0/image/?api_key=123456789abcdefghijk123456789abcdefghijk";
URL url = new URL(webAddressToPost);
HttpURLConnection conn = NetCipher.getHttpsURLConnection(url);
conn.setRequestMethod("POST");
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Content-Type", "multipart/form-data");
MultipartEntity entity = new MultipartEntity(
HttpMultipartMode.BROWSER_COMPATIBLE);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.PNG, 100, bos);
byte[] data = bos.toByteArray();
ByteArrayBody bab = new ByteArrayBody(data, "test.png");
entity.addPart("item",new StringBody(ITEM_ID);
entity.addPart("file", bab);
conn.addRequestProperty("Content-length", entity.getContentLength() + "");
【问题讨论】:
-
尝试查找 OkHttp 多部分请求
-
url 字段中应该有什么?项目和文件应该添加为setRequestproperty(),对吧?
-
api_key是一个查询参数。问号之前的所有内容都是 URL -
我正在使用 MultiPart 实体,我必须在其中添加两件事:
-
1. item 和 2, file..所以在将它们添加到实体之前我必须更改内容类型两次吗?
标签: android curl httpurlconnection multipartform-data