我是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返回并解析。但是使用上面的方法,如果我只添加一个userids [] = 5然后它工作正常但如果我添加第二个一切都挂起后“println callurl;”
我已经检查了网络服务端,并且调用发生了,一切都按预期工作。如果我在浏览器中调用它,它可以正常工作。但是从grails web应用程序它只是挂起。我知道我可能在这里做些傻事,但我真的被卡住了。希望你们能帮忙。
答案 0 :(得分:0)
你确定[]字符应该在那里吗?如果在查询字符串的末尾使用以下内容,它将有效地将userids = [5,23]传递给服务器:
&userids=5&userids=23
如果确实需要括号,请改为使用网址转义值%5B
和%5D
。
答案 1 :(得分:0)
首先,您应该考虑以下错误条目:
http://jira.codehaus.org/browse/GROOVY-3921
URL.getText()未指定连接超时。
如果您有权访问服务器日志,请检查是否实际收到了来自您的grails应用程序的请求(添加第二个userids []参数时)。如果不是这种情况,您可能必须使用tcpdump或Wireshark才能在TCP级别进行调试。