Grails 调用远程服务时出现奇怪的问题

Grails 调用远程服务时出现奇怪的问题,grails,groovy,Grails,Groovy,我不熟悉Grails和Groovy,但我的问题很简单,但很奇怪。 我正在调用远程web服务,如下所示: public Boolean addInvites(eventid,sessionkey ){ String url = this.API_URL+"AddInvites?apikey=${sessionkey}&eventid=${eventid}&userids[]=5&userids[]=23"; def callurl

我不熟悉Grails和Groovy,但我的问题很简单,但很奇怪。 我正在调用远程web服务,如下所示:

    public Boolean addInvites(eventid,sessionkey ){

        String url = this.API_URL+"AddInvites?apikey=${sessionkey}&eventid=${eventid}&userids[]=5&userids[]=23";

        def callurl = new URL(url);
        println callurl;

        def jsonResponse = callurl.getText();
        println jsonResponse;
        def jsonParsedObject = JSON.parse(jsonResponse);

        if(jsonParsedObject){
            println jsonParsedObject;
            if(jsonParsedObject.code == 200){

                return true;
            }
        }
    }



    return false;
}

这里的API_URL是一个“https://api..com/" 通常打这些电话都很好。返回并解析Json。然而,使用上述方法,如果我只添加一个userid[]=5,那么它可以正常工作,但是如果我添加第二个userid,那么在“println callurl


我已经在webservice端进行了检查,调用发生了,一切正常。如果我在浏览器中调用它,它可以正常工作。但在GrailsWeb应用程序中,它只是挂起。我知道我可能在做些傻事,但我真的被卡住了。希望你们能帮忙。

你确定[]字符应该在那里吗?如果在查询字符串的末尾使用以下命令,它将有效地将userid=[5,23]传递给服务器:

&userids=5&userids=23

如果括号真的是必需的,则使用URL转义值<代码> %5b和%5d代替它们。

< P>首先,您应该考虑以下错误条目:

getText()未指定连接超时


如果您有权访问服务器日志,请检查是否确实收到了来自grails应用程序的请求(添加第二个userids[]参数时)。如果不是这样,您可能必须使用tcpdump或Wireshark才能在TCP级别进行调试。

嘿,matt,谢谢您的回答。通常我用PHP编写代码,根据我所读的内容,使用[]是在GET请求中传递参数数组的正确方法。但将尝试编码。编码无效。奇怪的是,当按照我的代码中所示的方式完成时,它确实进行了调用,api端的所有事情都如预期的那样工作。嗯,如果它在浏览器中工作,那么我想这就是服务器所期望的。古怪的您的开发环境中是否有
curl
。它可以直接在Linux和MacOS上使用,也可以通过Windows上的Cygwin访问。如果是这样,您可以尝试在命令行上运行以下命令并包含输出:curl-v谢谢您的回答Andre。已检查服务器,并且肯定正在接收呼叫。如前所述,api端按预期完成了所有工作。我还从一个PHP类中进行了完全相同的调用,所有调用都按预期工作。奇怪且令人困惑:)请使用以下代码在客户端进行调试,这些代码与getText内部的工作方式类似:`def bufferedReader=url.newReader('utf-8'),而(bufferedReader.ready()){println bufferedReader.readLine()}`。由于web服务响应正确,因此是否在客户端接收数据将是一件有趣的事情。