2017-01-28 14 views
0

Я пытаюсь запустить запрос solr в начале моих тестов, чтобы получить кучу списков, которые я буду использовать в тестовом прогоне.Запрос Solr работает в браузере, но не использует RestTemplate org.apache.solr.search.SyntaxError: не удается разобрать

Если я сделать этот запрос в Chrome я получаю ответ JSon:

MYAPIDOMAIN/solr/listings/select?q=category:commercial+AND+property_type:office&fl=listing_id,listing_status&group=true&group.main=true&group.field=listing_status&group.limit=1&rows=100&wt=json&indent=on

В тестах я использую Spring RestTemplate, чтобы сделать вызов затем я разобрать ответ JSON, он работает для некоторых моих запросы, но для этого я просто получаю сообщение об ошибке назад:

"responseHeader":{ 
    "status":400, 
    "QTime":7, 
    "params":{ 
     "q":"category:commercial%2BAND%2Bproperty_type:office", 
     "group.main":"true", 
     "indent":"on", 
     "fl":"listing_id,listing_status", 
     "group.limit":"1", 
     "rows":"100", 
     "wt":"json", 
     "group.field":"listing_status", 
     "group":"true"}}, 
    "error":{ 
    "msg":"org.apache.solr.search.SyntaxError: Cannot parse 'category:commercial%2BAND%2Bproperty_type:office': Encountered \" \":\" \": \"\" at line 1, column 41.\nWas expecting one of:\n <EOF> \n <AND> ...\n <OR> ...\n <NOT> ...\n \"+\" ...\n \"-\" ...\n <BAREOPER> ...\n \"(\" ...\n \"*\" ...\n \"^\" ...\n <QUOTED> ...\n <TERM> ...\n <FUZZY_SLOP> ...\n <PREFIXTERM> ...\n <WILDTERM> ...\n <REGEXPTERM> ...\n \"[\" ...\n \"{\" ...\n <LPARAMS> ...\n <NUMBER> ...\n ", 
    "code":400}} 

Я ничего о Solr запросов я просто дал им использовать в тестах не знаю, очевидно, что это проблема кодирования, но я не знаю, где. Я пробовал использовать URLEncoder, я нашел некоторые онлайн-кодировщики URL, но, похоже, ничего не получается.

Может кто-нибудь, пожалуйста, скажите мне, что в этом плохого? У меня есть еще 5 запросов, которые мне нужно сделать, поэтому мне действительно нужно исправить.

Спасибо

ответ

0

Я попробовал то же самое на моем местном и нашел ту же ошибку, что связанно с закодированным значением% 2B -> + в вашем синтаксисе. И он разбивает парсер.

Таким образом, вы можете использовать пространство вместо +, которое изменится на% 20. Тогда он должен работать нормально.

+0

Спасибо, что работает отлично! – MisterMan

+0

@MisterMan отлично –