【问题标题】:Convert the curl command for android为android转换curl命令
【发布时间】: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


【解决方案1】:

看这个例子

https://github.com/square/okhttp/wiki/Recipes#posting-a-multipart-request

RequestBody requestBody = new MultipartBody.Builder()
        .setType(MultipartBody.FORM)
        .addFormDataPart("title", "Square Logo")
        .addFormDataPart("image", "logo-square.png",
            RequestBody.create(MEDIA_TYPE_PNG, new File("website/static/logo-square.png")))
        .build();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 2016-06-08
    相关资源
    最近更新 更多