1

@ResponseBody を使用して、Spring コントローラーから JSON データを返しています。これに似ています:

@RequestMapping("/api/someMethod.json")
public @ResponseBody MyClass someMethod(@RequestParam Long someVal, HttpServletRequest request) {
    return new MyClass(someVal);
}

MappingJacksonHttpMessageConverter は常に getContentLength() に対して null を返します。その結果、コンテンツ長ヘッダーは -1 になります。

content-length を正確に設定する必要があります (修正するためにアクセスできないクライアント側の別の問題を解決するため)。

このクラスで、生成された JSON のコンテンツの長さを計算し、これを content-length ヘッダーに設定する最も簡単な方法は何ですか?

この「修正」が必要な API メソッドがたくさんあるため、独自の JSON ジェネレーターを作成して json 文字列を返したくありません。

前もって感謝します。

4

1 に答える 1

0

一般的に言えば、HTTP ヘッダーの content-length を手動で設定する必要はありません。実際に送信されているデータよりも多いまたは少ないデータがあることをサービスに伝えることができるのは非常に危険です。基礎となるテクノロジー(あなたの場合は春)は、実際にはjson変換を適切に処理していないようです。

MyClass オブジェクトが適切に json に変換されていない可能性があります。そのため、コンテンツがありません。

于 2012-09-12T02:38:13.087 に答える