Всем привет! Сейчас занимаюсь интеграцией нашего проекта на Play 2.3.8 и гис.
С гис общение происходит с помощью get запросов.
Вот правильный пример запроса для получения объекта:
http://myGisServer.ru/myservice?token=XYZ%3D&query=[{"id":"123","objectIds":["5"]}]
Где token это токен полученый при авторизации и над которым производится url encode.
А query соответственно запрос в виде json
Я попробовал реализовать это вот так:
def getPoint = Action.async{
val data = Json.obj(
"id" -> "123",
"objectIds" -> Json.arr("5")
)
val ws = WS.url("http://myGisServer.ru/myservice").withQueryString(
"token" -> currentToken,
"query" -> data.toString()
)
val futureResponse: Future[WSResponse] = ws.get()
futureResponse.map(response => {
Ok(response.json)
})
}
Но, это не работает, потому что ws автоматически производит url encode над всем запросом, а над частью json, encode производить не надо.
Сформировать строчку, и просто скормить её ws в качестве url тоже не работает, потому что ws не умеет принимать в url некоторые символы, в том числе пробелы и квадратные скобки.
Как можно убрать encode из части запроса, или же создать запрос вообще без encode?