【问题标题】:Android Send image encoded to Base64 using VolleyAndroid 使用 Volley 将编码的图像发送到 Base64
【发布时间】:2016-07-11 17:00:45
【问题描述】:

我让用户选择一个图像,然后图像将转换为 Base64。我正在尝试将 Base64 字符串附加到我的 url(Json 格式),如下所示

http://codemoirai.esy.es/register.php?UserDetails={"Sex":"Male","Username":"joes","Bitmap":"iVBORw0KGgoAAAANSUhEUgAAAtAAAALQCAIAAAA2NdDLAAAAA3NCSVQICAjb4U\/gAAAgAEl......

但我收到这样的错误:

 BasicNetwork.performRequest: Unexpected response code 414 for http://codemoirai.esy.es/register.php?UserDetails={"Sex":"Male","Username":"joes","Bitmap":"iVBORw0KGgoAAAANSUhEUgAAAtAAAALQCAIAAAA2NdDLAAAAA3NCSVQICAjb4U\/gAA...........

我能知道是什么导致了这个错误吗?如何使用 Volley 发送编码为 Base64 格式的图像文件?

谢谢你

【问题讨论】:

标签: android android-volley


【解决方案1】:

响应 code 414 是 Request-URI Too Long(您的 base64 图像字符串太长,无法放入 url)。

服务器拒绝为请求提供服务,因为 Request-URI 比服务器愿意解释的要长。这种罕见的情况 仅当客户端未正确转换 POST 时才可能发生 请求一个带有长查询信息的 GET 请求,当客户端 已陷入重定向的 URI“黑洞”(例如, 指向自身后缀的重定向 URI 前缀),或者当 服务器受到试图利用安全性的客户端的攻击 某些服务器中存在使用固定长度缓冲区进行读取的漏洞 或操作 Request-URI。

所以你应该从 http get 更改为 http post 并在 http body 中发送 base64 图像

您的服务器必须处理 http post 数据。我不知道你用什么语言来实现你的服务器端。所以我只发布客户样本 样本

public void uploadAvatar(String username,String sex, String accessToken, String image, Response.Listener<JSONObject> success, Response.ErrorListener error) {
    String endpoint = "your server api url";
    ScoinJsonRequest request = new ScoinJsonRequest(Request.Method.POST, endpoint, getuploadAvatarParams(user, sex, image), success, error);
    request.setRetryPolicy(new DefaultRetryPolicy(MY_SOCKET_TIMEOUT_MS, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    requestQueue.add(request);
}

private Map<String, String> getuploadAvatarParams(String username,String sex,String stringBase64) 
 {
    Map<String, String> params = new HashMap<String, String>();
     params.put("username", username);
     params.put("gender", sex);
     params.put("ibase64", stringBase64);

    return params;
}

然后您可以使用uploadAvatar 功能并输入所有需要的参数。 关于服务器端,您可以搜索阅读http post data + your language。我给你一个链接到c# example

【讨论】:

  • 我是排球新手!如果您不介意,请详细说明您的答案
  • 嘿,我在服务器端使用 php! $_Post["gender"] 这就是我们获取参数的方式吗?
  • @Jois 是的。您可以查看答案here
猜你喜欢
  • 2015-07-19
  • 2021-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多