Странная проблема вызова удаленного сервиса - PullRequest
0 голосов
/ 20 апреля 2011

Я новичок в Grails и Groovy, но моя проблема простая, но странная.Я выполняю вызовы к удаленному веб-сервису следующим образом:

    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 оно просто зависает.Я знаю, что, возможно, я делаю что-то глупое здесь, но я действительно застрял.Надеюсь, вы, ребята, можете помочь.

Ответы [ 2 ]

0 голосов
/ 21 апреля 2011

Прежде всего, вы должны рассмотреть следующую запись об ошибке:

http://jira.codehaus.org/browse/GROOVY-3921

URL.getText () не указывает время ожидания соединения.

если выиметь доступ к журналам сервера и проверять, действительно ли получены запросы от вашего приложения grails (при добавлении второго параметра userids []).если это не так, вам, вероятно, придется использовать tcpdump или Wireshark для отладки на уровне TCP.

0 голосов
/ 21 апреля 2011

Вы уверены, что символы [] должны быть там? Если вы используете следующее в конце строки запроса, она будет эффективно передавать userids = [5,23] на сервер:

&userids=5&userids=23

Если скобки действительно необходимы, используйте вместо них экранированные значения URL %5B и %5D.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...