2

从我的 android 我试图将带有一类数据的图像发送到 IIS web 服务。(C#)

问题是我明白了400 Bad request

图像被编码为Base64. json然后与其余的类元素一起放入。

我的猜测是 Base64 在 Json 中无效。所以服务器不理解它。如果我将字符串设置为"",则帖子被接受。

所以问题是,如何在数组中使我的Base64有效?Json(我尝试了 URL.Encode 没有成功)。

或者你应该如何将图像从 android 发送到 web 服务?

 Gson gson = new Gson();

 String json = gson.toJson(record);  // record has param { String base64Photo }
4

2 回答 2

1

老实说 - 我从来没有将图像从 Android 上传到 IIS 网络服务,但在所有其他情况下,我总是只使用File. 创建文件并将其上传为MultipartEntity. 另外,您避免了必须一起使用Base64,这很好,因为它可以为您节省大约 33% 的使用Base64.

private File createFileFromBm(Bitmap pic){
    File f = new File(context.getCacheDir(), "image");

    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    pic.compress(CompressFormat.JPEG, 100, bos);
    byte[] data = bos.toByteArray();

    try{
        FileOutputStream fos = new FileOutputStream(f);
        fos.write(data);
        fos.close();
    } catch (IOException e){
        Log.e(TAG, e.toString());
    }

    return f;
}

以下是您如何创建一个MultipartEntity

MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE;              
entity.addPart("photo", new FileBody(file, "image/jpeg"));
httpPost.setEntity(entity);
return httpClient.execute(httpPost, responseHandler);

我使用了一个HttpPosthere 和 aBasicResponseHandler来接收JSON来自服务器的输出进行处理,但你可以做任何你喜欢的事情。

于 2013-08-15T14:46:07.913 回答
1

图片有多大?我很确定您已经超过了 IIS Json 大小限制(默认值几乎是 4 MB)。

检查这个http://geekswithblogs.net/frankw/archive/2008/08/05/how-to-configure-maxjsonlength-in-asp.net-ajax-applications.aspx或这个http://www.webtrenches.com /post.cfm/iis7-file-upload-size-limits

祝你好运!

于 2013-08-15T14:38:05.297 回答