在 JSON 请求中发送图像

rei*_*ley 8 java rest android json

我使用的是JSONRESTAPI使用Web服务。

现在我还需要在请求中发送图像。是否可以?

如果是,我需要在客户端/服务器端做哪些更改。

在我的 Java 代码中,我应该如何发送图像内容(是否需要单独设置内容类型)?

小智 5

这样做的方法是将其作为内容发送到 HttpPost 请求中,如下所示

HttpClient client = new DefaultHttpClient();
HttpPost postRequest = new HttpPost(url);
String body = getMessageBody();
try
{
    postRequest.setEntity(new StringEntity(body, "UTF8"));
    postRequest.setHeader("Content-Type", "application/x-www-form-urlencoded");
    HttpResponse response = client.execute(postRequest);
    return response;
} catch (UnsupportedEncodingException e)
{
    e.printStackTrace();
} catch (ClientProtocolException e)
{
    e.printStackTrace();
} catch (IOException e)
{
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

您对图像进行字符串编码的方式是执行以下操作。

BufferedImage img = ImageIO.read(new File("filename.jpg"));             
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(img, "jpg", baos);
baos.flush();
Base64 base = new Base64(false);
String encodedImage = base.encodeToString(baos.toByteArray());
baos.close();
encodedImage = java.net.URLEncoder.encode(encodedImage, "ISO-8859-1");
Run Code Online (Sandbox Code Playgroud)

祝你好运


Bor*_*jev -1

您不应该发送图像本身,而应该发送可以下载图像的 URL。

否则:

  • 你的要求太大了
  • 通常您希望异步加载图像,这只有在内容与其他数据分离的情况下才能实现。
  • 您很可能无法使用自动 JSON 解析库,例如 GSON、Jackson 或 Adnroid SDK 中集成的库AndroidObject