web-dev-qa-db-ja.com

予期しない文字( '<'(コード60))

奇妙なエラーが発生しています。これは機能していました。アプリサーバー、コード、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":".....
5
xpagesbeast

XPageは、XPageで何を行っても、デフォルトでtext/htmlとして結果を返します。例が示すように、JSONを(JSONのように見えるHTMLではなく)計算する場合、返されたヘッダーをapplication/jsonに上書きできます。次に、ブラウザでJSONをレンダリングする Chromeのプラグイン を追加して、確認できるようにします。

非常に可能なこと:サーバーがDominoを呼び出す場合、どのように認証されますか?セッションベースの認証があり、失敗した場合、401は返されませんが、ユーザー名/パスワードのHTMLベースの入力フォームが返されます(匿名ウィンドウを使用してブラウザでページを試してください)。

Domino構成では、セッション以外でURLが基本認証を使用できるように指定できます。その後、サーバーは https:// user:[email protected]/yourdb.nsf/somexpage.xsp を送信して結果を取得できます。

最初のチェック:サーバーがユーザー/パスを使用していて、十分なアクセス権があるかどうか。

2
stwissel

Rest Assuredは指定された形式の解析に失敗しました

XMLの例では、response.as(ClassName.class、ObjectMapperType.JAXB);として使用する必要があります。

REST以下で保証されるその他の事前定義オブジェクトマッパーpublic public ObjectMapperType {JACKSON_2、JACKSON_1、GSON、JAXB}

0
Paul A M C