Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未找到响应类型-自定义RestTemplate的合适HttpMessageConverter_Java_Android_Spring_Rest - Fatal编程技术网

Java 未找到响应类型-自定义RestTemplate的合适HttpMessageConverter

Java 未找到响应类型-自定义RestTemplate的合适HttpMessageConverter,java,android,spring,rest,Java,Android,Spring,Rest,首先,很抱歉可能重复。我发现了一些关于类似问题的问题。然而,在我的具体案例中,我仍然无法找出问题所在 因此,来自服务器的json示例: [ { "_id": "55f9690f30ef6f210e2dc3a5", "ID": "74c4bf82-9f78-4df5-b9d7-6547e2a55eaa", "Name": "myLand, Saarbrücken", "__v": 0, "Shops": [ { "ID": "

首先,很抱歉可能重复。我发现了一些关于类似问题的问题。然而,在我的具体案例中,我仍然无法找出问题所在

因此,来自服务器的json示例:

[
  {
    "_id": "55f9690f30ef6f210e2dc3a5",
    "ID": "74c4bf82-9f78-4df5-b9d7-6547e2a55eaa",
    "Name": "myLand, Saarbrücken",
    "__v": 0,
    "Shops": [
      {
        "ID": "b8eacee1-b2c6-48aa-ac6f-2e7fbe3a5d68",
        "Name": "ARA",
        "_id": "55f9690f30ef6f210e2dc3a6",
        "News": [
          {
            "ID": "d79b7f51-7d5c-4bd6-9321-e40c6e93788c",
            "ValidFrom": "2015-01-08T00:00:00",
            "ValidTo": "2015-09-30T00:00:00",
            "_id": "55f9690f30ef6f210e2dc3a7",
            "Texts": [
              {
                "ID": "TITLE",
                "Value": "11. Wochenspiegel Firmenlauf",
                "_id": "55f9690f30ef6f210e2dc3a9"
              },
              {
                "ID": "BODY",
                "Value": "Wir gratulieren zur ersten und gleich sehr erfolgreichen Teilnahme am 11.Wochenspiegel Firmenlauf in Dillingen,\r\nunsere Teams vom “Outlet center Wadgassen“ haben ihren Lauf mit tollen Zeiten abgeschlossen und hatten trotz\r\nhohen Temperaturen einen wunderbaren Tag – wie man sehen kann. Wir freuen uns schon jetzt auf nächstes Jahr!",
                "_id": "55f9690f30ef6f210e2dc3a8"
              }
            ]
          }
        ],
        "Texts": [
          {
            "ID": "DESCRIPTION",
            "Value": "Mit Tradition in die Zukunft Seit sechs Jahrzehnten steht ara für vielfältige Schuhmode erstklassiger Qualität,",
            "_id": "55f9690f30ef6f210e2dc3aa"
          }
        ]
      }
    ]
  }
]
我生成了名为Mall的类(以及数据结构其余部分的所有子类):

然而,我仍然得到同样的例外:

无法提取响应:找不到适合的HttpMessageConverter 响应类型[m.m.restspringtest.Mall.Mall]和内容类型 [应用程序/json]


据我所知,如果我改变内容类型,应该可以。你能告诉我我做错了什么吗?

所以,我终于明白了。json中有一个数组,所以我想把它映射到Mall[],而不是Mall。我提供了错误的类,应该有:

RestTemplateJSON restTemplate = new RestTemplateJSON();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
Mall[] malls = restTemplate.getForObject(url, Mall[].class);
public class RestTemplateJSON extends RestTemplate
{

    @Override
    protected <T> T doExecute(URI url, HttpMethod method, RequestCallback requestCallback,
                              ResponseExtractor<T> responseExtractor) throws RestClientException
    {

        //logger.info(RestTemplateJSON.class.getSuperclass().getSimpleName() + ".doExecute() is overridden");

        Assert.notNull(url, "'url' must not be null");
        Assert.notNull(method, "'method' must not be null");
        ClientHttpResponse response = null;
        try
        {
            ClientHttpRequest request = createRequest(url, method);
            if (requestCallback != null)
            {
                requestCallback.doWithRequest(request);
            }
            response = request.execute();

            // Set ContentType to JSON
            response.getHeaders().setContentType(MediaType.APPLICATION_JSON);

            if (!getErrorHandler().hasError(response))
            {
                logResponseStatus(method, url, response);
            } else
            {
                handleResponseError(method, url, response);
            }
            if (responseExtractor != null)
            {
                return responseExtractor.extractData(response);
            } else
            {
                return null;
            }
        }
        catch (IOException ex)
        {
            throw new ResourceAccessException("I/O error on " + method.name() +
                    " request for \"" + url + "\":" + ex.getMessage(), ex);
        }
        finally
        {
            if (response != null)
            {
                response.close();
            }
        }

    }

    private void logResponseStatus(HttpMethod method, URI url, ClientHttpResponse response)
    {
        //if (logger.isDebugEnabled())
        {
            try
            {
                System.out.println(method.name() + " request for \"" + url + "\" resulted in " +
                        response.getRawStatusCode() + " (" + response.getStatusText() + ")");
            }
            catch (IOException e)
            {
                // ignore
            }
        }
    }

    private void handleResponseError(HttpMethod method, URI url, ClientHttpResponse response) throws IOException
    {
        getErrorHandler().handleError(response);
    }
}
RestTemplateJSON restTemplate = new RestTemplateJSON();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
Mall mall = restTemplate.getForObject(url, Mall.class);
RestTemplateJSON restTemplate = new RestTemplateJSON();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
Mall[] malls = restTemplate.getForObject(url, Mall[].class);