0

クライアントへのアクセス API キーを非表示にするために、外部サービスから返される json フィード (場合によっては非常に大きい) を "パイプ" しています (アクセス キーは、そのサービスで使用できる唯一の認証システムです)。

私は Gaelyk を使用しており、この groovlet を書きました:

try {
    feed(params.topic)
} catch(Exception e) {
    redirect "/failure"
}

def feed(topic) {

    URL url = new URL("https://somewhere.com/$topic/<apikey>/feed")
    def restResponse = url.get()

    if (restResponse.responseCode == 200) {
        response.contentType = 'application/json'
        out << restResponse.text
    }
}

唯一の問題は、「restResponse」が非常に大きく、groovlet によって返される値が切り捨てられることです。したがって、次のようなjsonが返されます。

[{"item":....},{"item":....},{"item":....},{"ite

切り捨てなしで完全なjsonを返すにはどうすればよいですか?

4

1 に答える 1

0

私は解決策を見つけましたが、問題は最初にありました (URL コンテンツはストリームとして読み取る必要があります)。そのため、コンテンツは切り捨てられ、出力ではなく入力になりました。

def feed(topic) {
    URL url = "https://somewhere.com/$topic/<apikey>/feed".toURL()
    def restResponse = url.get()

    if (restResponse.responseCode == 200) {
        response.contentType = 'application/json'
        StringBuffer sb = new StringBuffer()
        url.eachLine {
            sb << it
        }
        out << sb.toString()
    }
}
于 2014-07-04T06:30:40.023 に答える