Playframework 如果WSRequest有太多get()参数,会发生什么情况?

Playframework 如果WSRequest有太多get()参数,会发生什么情况?,playframework,playframework-2.4,Playframework,Playframework 2.4,我有一个相当奇怪的问题,在任何地方都找不到答案。我正在游戏中创建WSRequest!2.4.3我正在使用setQueryParameter()向请求中添加查询参数。之后,我使用request.get()将它们发送到另一台服务器并检索结果 一切正常,但我很好奇,如果参数超出get()的限制,会发生什么情况。我需要检查这个并提出两个单独的请求吗?这是在某个地方处理的还是只返回一个异常 谢谢我在文档中没有看到这些数字,但据我所知,标准中没有查询字符串的限制,因此这取决于实现情况。我敢肯定,即使在您的服

我有一个相当奇怪的问题,在任何地方都找不到答案。我正在游戏中创建WSRequest!2.4.3我正在使用setQueryParameter()向请求中添加查询参数。之后,我使用request.get()将它们发送到另一台服务器并检索结果

一切正常,但我很好奇,如果参数超出get()的限制,会发生什么情况。我需要检查这个并提出两个单独的请求吗?这是在某个地方处理的还是只返回一个异常


谢谢

我在文档中没有看到这些数字,但据我所知,标准中没有查询字符串的限制,因此这取决于实现情况。我敢肯定,即使在您的服务器之前,另一台服务器也会遇到长查询字符串的问题

我唯一建议的解决方案是通过一些简单的代码进行检查:

package controllers;

import javax.inject.Inject;

import play.*;
import play.mvc.*;

import play.libs.ws.*;
import play.libs.F.Promise;

public class Application extends Controller {

    @Inject WSClient ws;

    public Promise<Result> index() {
        WSRequest request = ws.url("http://httpbin.org/get");
        int paramsNumber = 100;
        for(int i=0; i<paramsNumber; i++){
          request.setQueryParameter("paramKey" + i, "paramValue" + i);
        }
        return request.get().map(response -> ok(response.getBody()));
    }

}
包控制器;
导入javax.inject.inject;
输入播放*;
导入play.mvc.*;
导入play.libs.ws.*;
导入play.libs.F.Promise;
公共类应用程序扩展控制器{
@注入wsws客户端;
公共承诺指数(){
WSRequest=ws.url(“http://httpbin.org/get");
int paramsNumber=100;
for(int i=0;i ok(response.getBody());
}
}
所以,“”可以轻松地获取100个参数(当然,Play可以创建并发送它)。1000个参数返回“414请求URI太大”,但play仍然能够创建并发送1000个参数而不会出错

我很确定问题不在max参数中,而是在max查询字符串长度中

更新


我在本地运行netcat echo-
nc-l 8888
,然后请求url
http://127.0.0.1:8888
有100000个参数,比如
¶mKey99999=paramValue99999
——它就像一个符咒。所以我可以回答:play 2.4.3可以在WS-request中发送至少100000个参数,总长度为260000个字符。您确定要有更多的get参数来支持此操作吗

谢谢。不,我不会有超过10000个参数:)