相关疑难解决方法(0)

使用Android SDK发布多部分请求

我正在尝试做一些我认为相对简单的事情:使用Android SDK将图像上传到服务器.我找到了很多示例代码:

http://groups.google.com/group/android-developers/browse_thread/thread/f9e17bbaf50c5fc/46145fcacd450e48

http://linklens.blogspot.com/2009/06/android-multipart-upload.html

但是对我来说都不起作用.我一直遇到的困惑是制作多部分请求真正需要的东西.Android的多部分上传(带图片)的最简单方法是什么?

任何帮助或建议将不胜感激!

android http multipartform-data android-sdk-2.1

78
推荐指数
4
解决办法
13万
查看次数

如何使用OKHTTP发帖请求?

我读了一些将jsons发布到服务器的例子.

有人说:

OkHttp是Java提供的HttpUrlConnection接口的实现.它提供了用于编写内容的输入流,并且不知道(或关心)该内容的格式.

现在我想使用名称和密码的参数对URL进行正常发布.

这意味着我需要自己将名称和值对编码为流吗?

java okhttp

78
推荐指数
6
解决办法
15万
查看次数

简单的HttpURLConnection POST文件multipart/form-data从android到google blobstore

我不知道html是如何工作的.我想要做的是与以下内容完全类似,但在android上

<body>
    <form action="<%= some_url %>" method="post" enctype="multipart/form-data">
        <input type="file" name="myFile">
        <input type="submit" value="Submit">
    </form>
</body>
Run Code Online (Sandbox Code Playgroud)

我尝试了以下代码 -

private static void postToUrl(String url_to_upload_on,
        String file_name_with_ext, byte[] byteArray) {

    String attachmentName = "file";
    String attachmentFileName = file_name_with_ext;
    String crlf = "\r\n";
    String twoHyphens = "--";
    String boundary =  "*****";

    try{

    URL url = new URL(url_to_upload_on);
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setDoOutput(true);
    connection.setRequestMethod("POST");

    connection.setRequestProperty(
        "Content-Type", "multipart/form-data;boundary=" + boundary);
    DataOutputStream request = new DataOutputStream(
            connection.getOutputStream()); 
    request.writeBytes(twoHyphens + boundary + crlf);
    request.writeBytes("Content-Disposition: form-data; …
Run Code Online (Sandbox Code Playgroud)

android multipartform-data file httpurlconnection blobstore

39
推荐指数
3
解决办法
5万
查看次数

使用okHttp上传图片

我想使用okhttp上传图像,但我无法找到Postpart的MultipartBuilder.我可以使用什么而不是这个.

这是我的代码

public static JSONObject uploadImage(File file) {

        try {

            final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png");

            RequestBody req = new MultipartBuilder().setType(MultipartBody.FORM).addFormDataPart("userid", "8457851245")
                    .addFormDataPart("userfile","profile.png", RequestBody.create(MEDIA_TYPE_PNG, file)).build();

            Request request = new Request.Builder()
                    .url("url")
                    .post(req)
                    .build();

            OkHttpClient client = new OkHttpClient();
            Response response = client.newCall(request).execute();

            Log.d("response", "uploadImage:"+response.body().string());

            return new JSONObject(response.body().string());

        } catch (UnknownHostException | UnsupportedEncodingException e) {
            Log.e(TAG, "Error: " + e.getLocalizedMessage());
        } catch (Exception e) {
            Log.e(TAG, "Other Error: " + e.getLocalizedMessage());
        }
        return null;
    }
Run Code Online (Sandbox Code Playgroud)

提前致谢.

upload android image okhttp3

17
推荐指数
3
解决办法
2万
查看次数

无法在okhttp:3.0.0-RC1中解析MultipartBuilder

我已经使用了okhttp,它可以正常使用以下依赖:

compile 'com.squareup.okhttp:okhttp:2.3.0'
Run Code Online (Sandbox Code Playgroud)

最近我更新了:

compile 'com.squareup.okhttp3:okhttp:3.0.0-RC1'
Run Code Online (Sandbox Code Playgroud)

它显示MultipartBuilder无法解决的错误.

我正在使用我的上传文件上传答案上传图片.

有没有办法实现相同的使用okhttp:3.0.0-RC1

android okhttp okhttp3

14
推荐指数
1
解决办法
6478
查看次数

使用okhttp上传文件

我正在完成这个使用okhttp与web服务进行通信的项目.

对于常规GET和POST,一切正常,但我无法正确上传文件.

okhttp文档非常缺乏这些主题,我在这里或任何地方找到的所有东西似乎都不适用于我的情况.

它应该很简单:我必须发送文件和一些字符串值.但我无法弄清楚如何做到这一点.

根据我发现的一些样本,我首先尝试了这个:

RequestBody requestBody = new MultipartBuilder().type(MultipartBuilder.FORM)
    .addFormDataPart("group", getGroup())
    .addFormDataPart("type", getType())
    .addFormDataPart("entity", Integer.toString(getEntity()))
    .addFormDataPart("reference", Integer.toString(getReference()))
    .addPart(Headers.of("Content-Disposition", "form-data; name=\"task_file\""), RequestBody.create(MediaType.parse("image/png"), getFile()))
    .build();
Run Code Online (Sandbox Code Playgroud)

它给了我一个"400错误请求"错误.

所以我从okhttp食谱中尝试了这个:

RequestBody requestBody = new MultipartBuilder().type(MultipartBuilder.FORM)
    .addPart(Headers.of("Content-Disposition", "form-data; name=\"group\""), RequestBody.create(null, getGroup()))
    .addPart(Headers.of("Content-Disposition", "form-data; name=\"type\""), RequestBody.create(null, getType()))
    .addPart(Headers.of("Content-Disposition", "form-data; name=\"entity\""), RequestBody.create(null, Integer.toString(getEntity())))
    .addPart(Headers.of("Content-Disposition", "form-data; name=\"reference\""), RequestBody.create(null, Integer.toString(getReference())))
    .addPart(Headers.of("Content-Disposition", "form-data; name=\"task_file\""), RequestBody.create(MediaType.parse("image/png"), getFile()))
    .build();
Run Code Online (Sandbox Code Playgroud)

结果相同.

不知道还有什么可以尝试或调查这个调查.

请求使用以下代码完成:

// adds the required authentication token
Request request = new Request.Builder().url(getURL()).addHeader("X-Auth-Token", getUser().getToken().toString()).post(requestBody).build();
Response response = client.newCall(request).execute();
Run Code Online (Sandbox Code Playgroud)

但我很确定问题是如何构建请求体.

我究竟做错了什么?

编辑:顺便说一句,上面的"getFile()"返回一个File对象.其余参数都是字符串和整数.

java android okhttp

8
推荐指数
2
解决办法
1万
查看次数