奇妙なエラーが発生しています。これは機能していました。アプリサーバー、コード、jvmかどうかわかりませんか?
JVM: Java Virtual Machine initialized.
Java runtime version: pwa6480sr4fp5-20170421_01 (SR4 FP5)
JVM version: JRE 1.8.0 Windows Server 2008 R2 AMD64-64 20170419_344392 (JIT enabled, AOT enabled) J9VM - R28_20170419_1004_B344392 JIT - tr.r14.Java_20170419_344392 GC - R28_20170419_1004_B344392 J9CL - 20170419
`` `
JVM: Caused by:
JVM: com.fasterxml.jackson.core.JsonParseException: Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
JVM: at [Source: Sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@2a19861e; line: 1, column: 2]
JVM: at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.Java:1524)
JVM: at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.Java:557)
JVM: at com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.Java:475)
JVM: at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._handleUnexpectedValue(UTF8StreamJsonParser.Java:2343)
JVM: at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._nextTokenNotInObject(UTF8StreamJsonParser.Java:818)
JVM: at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextToken(UTF8StreamJsonParser.Java:698)
JVM: at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.Java:3031)
JVM: at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.Java:2978)
JVM: at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.Java:2158)
JVM: at org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.readJavaType(MappingJackson2HttpMessageConverter.Java:225)
```
```
import org.springframework.web.client.RestTemplate;
public static RestTemplate getRestTemplate() {
RestTemplate restTemplate = new RestTemplate();
List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
List<MediaType> mediaTypes = new ArrayList<MediaType>();
mediaTypes.add(MediaType.TEXT_HTML);
mediaTypes.add(MediaType.APPLICATION_JSON);
converter.setSupportedMediaTypes(mediaTypes);
messageConverters.add(converter);
messageConverters.add(new StringHttpMessageConverter());
restTemplate.setMessageConverters(messageConverters);
return restTemplate;
}
//The call is here
ResponseEntity<BargeType[]> responseEntity = getRestTemplate().getForEntity(url+"/bargetype", BargeType[].class);
```
ブラウザで渡されたURLを確認し、JSONを取得しています。応答をコピーしてjson lintに貼り付け、正常に検証しました。
エラーメッセージの例外に「<」が含まれているため、エラーが返されていると推測しています。
私の質問は:
1)RestTemplateを使用するより良いパターンはありますか?
2)httpエラーを取得する方法はありますか?
Fiddler Daisyを使用して2018年5月3日更新、ワークステーションでブラウザを使用してGET応答ヘッダーを推奨(ただし、アプリはサーバーで実行されています)。
HTTP/1.1 200 OK
Server: Lotus-Domino
Date: Thu, 03 May 2018 15:28:23 GMT
Connection: close
Content-Type: text/html; charset=UTF-8
[{"contract":xxxx,"customer":".....
XPageは、XPageで何を行っても、デフォルトでtext/html
として結果を返します。例が示すように、JSONを(JSONのように見えるHTMLではなく)計算する場合、返されたヘッダーをapplication/json
に上書きできます。次に、ブラウザでJSONをレンダリングする Chromeのプラグイン を追加して、確認できるようにします。
非常に可能なこと:サーバーがDominoを呼び出す場合、どのように認証されますか?セッションベースの認証があり、失敗した場合、401は返されませんが、ユーザー名/パスワードのHTMLベースの入力フォームが返されます(匿名ウィンドウを使用してブラウザでページを試してください)。
Domino構成では、セッション以外でURLが基本認証を使用できるように指定できます。その後、サーバーは https:// user:[email protected]/yourdb.nsf/somexpage.xsp を送信して結果を取得できます。
最初のチェック:サーバーがユーザー/パスを使用していて、十分なアクセス権があるかどうか。
Rest Assuredは指定された形式の解析に失敗しました
XMLの例では、response.as(ClassName.class、ObjectMapperType.JAXB);として使用する必要があります。
REST以下で保証されるその他の事前定義オブジェクトマッパーpublic public ObjectMapperType {JACKSON_2、JACKSON_1、GSON、JAXB}