RestTemplate getForObject, Konnte nicht Lesen, JSON: Unerwartetes Zeichen ('<' (code 60))
Will ich Lesen-String aus der http-Antwort,wie eben dieses.
Ich bin versucht, dies zu tun [siehe unten], und es wirft Fehler.
1.Client
String string=getForObject("http://127.0.0.1:6060/dc-server/rest/dataset/Book/meta", String.class);
2.Server
@ResponseBody
@RequestMapping(value="/dataset/{datasetName}/meta", method=RequestMethod.GET)
public String getDatasetMeta(@PathVariable("datasetName") String datasetName) {
return service.getDatasetMeta(datasetName);
}
spring mvc konfigurieren Sie die Datei
<bean id="jsonMessageConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
</bean>
<bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter"/>
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<property name="messageConverters">
<list>
<ref bean="jsonMessageConverter" />
<ref bean="stringHttpMessageConverter"/>
</list>
</property>
</bean>
Ausnahme
org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
at [Source: sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@19a6fa1; line: 1, column: 2]; nested exception is org.codehaus.jackson.JsonParseException: Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
at [Source: sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@19a6fa1; line: 1, column: 2]
at org.springframework.http.converter.json.MappingJacksonHttpMessageConverter.readInternal(MappingJacksonHttpMessageConverter.java:127)
at org.springframework.http.converter.AbstractHttpMessageConverter.read(AbstractHttpMessageConverter.java:153)
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:81)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:446)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:401)
at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:199)
at com.cgs.dc.client.rest.RestConnector.getDatasetMeta(RestConnector.java:55)
at server/rest/dataset/Book/meta" resulted in 200 (OK)
14:01:05,395 DEBUG RestTemplate:78 - Reading [java.lang.String] as "application/json" using [org.springframework.http.converter.json.MappingJacksonHttpMessageConverter@1371ddd]
Antwort Körper
<dataset xmlns="http://sucsoft.com/DC_DEF" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ......
Mithilfe einer json-Nachricht-Konverter ist nicht gut hier.'" 'ist kein Gültiger char für json. Wenn ich das noch verwenden möchten json-Nachricht, die ich verwenden kann JSONObject.Zitat("").
InformationsquelleAutor tomcat | 2013-06-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den service, den Sie sind, Zugriff auf die Rücksendung einer xml-Antwort, nicht eine json-Antwort. Was Sie wahrscheinlich tun sollten, ist die Nutzung von JAX-B zu konvertieren, dass xml eine echte java-Objekt.
Mit das eclipse-plugin erzeugen können Sie einem bereits annotierten java-Klasse, die von Ihrem xml-Dokument. Dann können Sie verwenden diese Klasse in der restTemplate (es benötigt keine spezielle spring-xml-Konfiguration) als die Klasse, die Sie möchten, dass die xml-Deserialisierung in.
Wie diese:
Stellen Sie sicher
Response
ist die annotierte Klasse.Wenn Sie wollen einfach nur ein string ist, dann stellen Sie sicher, dass der Frühling nicht versucht zu Deserialisieren, dass die Verwendung einer json-Nachricht-Konverter.
InformationsquelleAutor CorayThan