当前位置: 首页 > 知识库问答 >
问题:

在Android上通过RestTemplate在base64中使用image发布JSON时出错

颛孙建业
2023-03-14

我找了很多,但没有找到任何解决办法。我试图通过android使用客户端resttemplate将带有base64编码的图像的json对象发布到web服务。

    RestTemplate restTemplate = new RestTemplate();
    restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
    restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
    ResponseEntity responseEntity;
    try {
        HttpHeaders header = createHeadersAthententicated(accessToken);
        header.setContentType(new MediaType("application", "json"));
        JsonObject jsonObject = new JsonObject();

        jsonObject.addProperty("base64File", ImageUtil.bitmapToString(user.getProfileImageInBitmap()));
        jsonObject.addProperty("filename", "profileImage".concat("_").concat(user.getEmail()));
        HttpEntity<JsonObject> requestEntity = new HttpEntity<>(jsonObject, header);
        responseEntity = restTemplate.exchange(userUrl, HttpMethod.POST, requestEntity, String.class);
    } catch (HttpClientErrorException e) {
        Log.e(TAG, e.getMessage(), e);
        responseEntity = new ResponseEntity(e.getResponseBodyAsString(), HttpStatus.BAD_REQUEST);
    } catch (RestClientException e1) {
        Log.e(TAG, e1.getMessage(), e1);
        responseEntity = new ResponseEntity(e1.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
    }


public static String bitmapToString(Bitmap bitmap) {
    try {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
        byte[] b = baos.toByteArray();
        String temp = Base64.encodeToString(b, Base64.DEFAULT);
        return temp;
    } catch (NullPointerException e) {
        return null;
    } catch (OutOfMemoryError e) {
        return null;
    }
}

http.springframework.http.converter.httpMessageNotWritableException:无法编写JSON:JsonObject(通过引用链:com.google.gson.JsonObject[“AsbigDecimal”]);嵌套异常是com.fasterxml.jackson.databind.jsonMappingException:JsonObject(通过引用链:com.google.gson.JsonObject[“AsbigDecimal”])

共有1个答案

洪祺
2023-03-14

我在使用Resttemplate时没有取得进展,所以我改成了OkHttp3

 final okhttp3.MediaType JSON = okhttp3.MediaType.parse("application/json");
    OkHttpClient client = new OkHttpClient();

    RequestBody body = RequestBody.create(JSON, jsonObject.toString());
    Request request = new Request.Builder()
            .addHeader("Authorization", "Bearer" + accessToken)
            .url(userUrl)
            .post(body)
            .build();

工作完美。

还有一件事,当您转换为base64时,您必须使用base64.no_wrap,这不是中断线。

 类似资料:
  • 这就是我如何尝试使用RestTemplate调用服务器, 这就是我如何使用它(用于测试) 我的登录响应类及其子类, null null null null 公共类BaseResponse{ 受保护字符串StatusCode; 我的问题是,1。为什么调用服务器时会出现此错误 信息:org.springframework.beans.factory.support.defaultListableBea

  • 我正在使用截击库。我有以下API urlhttp://example.com/project/contriller/并且需要将json请求作为body发布到它。 如何使用截击发送?

  • 我试图使用Spring RestTemplate发布一个多部分/表单数据,并将字节数组作为上传文件,但它总是失败(服务器拒绝了不同类型的错误)。 我正在使用带有ByteArrayResource的MultiValueMap。是不是我漏了什么?

  • 问题内容: 我正在尝试在Jenkinsfile中使用 通过SSH发布 插件。但是,我在方法中遇到了异常。这是我的代码: 如何摆脱异常? 问题答案: 这是因为某些变量不可序列化。 来自文件 由于管道必须在Jenkins重新启动后才能幸免,因此正在运行的程序的状态会定期保存到磁盘,以便以后可以恢复(保存在每个步骤之后或在步骤的中间进行,例如)。 您可以使用注释进行创建,使用

  • 我正在尝试在 Jenkinsfile 中使用 Publish over SSH 插件。但是,我在 方法中得到了异常 。这是我的代码: 我怎样才能消除异常?

  • 我有一个终点 api响应看起来像 我正在尝试使用SpringV2在另一个微服务中使用该endpoint。5.0 via 的实现遵循这篇文章来处理分页响应。 然而,当运行我的应用程序时,我得到了这个错误 如何正确使用此终结点?