2014-11-28 6 views
1

Моя API конечная точка выглядитResteasy: @PathParam возвращает первое слово, если строка содержит пробелы

@GET 
@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.APPLICATION_JSON) 
@Path("groups/{groupName}") 
public Response getCategoriesByGroupName(@PathParam("groupName") @Nonnull final String groupName) { 
    return Response.ok(getCategoryTO().getCategoriesByGroupName(categoryManager, groupName)).build(); 
} 

Когда я пытаюсь попасть в конечную точку, как

curl -H"Content-Type: application/json" -H"BEARER:792345452:78f7f8a4-a8c9-454a-93a8-6633a1076781:169000000" "https://myapp.com/rest/categories/groups/Utilities" 

я получаю правильный JSON назад, то есть groupName правильно заменен Utilities

Но когда я сделаю

curl -H"Content-Type: application/json" -H"BEARER:792345452:78f7f8a4-a8c9-454a-93a8-6633a1076781:169000000" "https://myapp.com/rest/categories/groups/Food & Drink" 

Я вижу ошибка сервера, как

Caused by: javax.ejb.EJBException: javax.persistence.NoResultException: no categories exists with groupName: Food 

Проблема в том, что groupName был замещен, как Food вместо Food & Drink

Я попытался с другими groupName с и понял, что всякий раз, когда мой groupName имеет пробелы, только первое слово заменяется на groupName

Как исправить эту проблему, так что t целая строка, прошедшая в URL, становится groupName?

Мой сервер развернут на Wildfly 8

+2

'' & специальный символ. Вам нужно закодировать его. –

+0

Можете ли вы мне посоветовать, как это сделать? – daydreamer

+1

http://www.degraeve.com/reference/urlencoding.php –

ответ

0

Это не имеет ничего общего с моей точки.

Как уже упоминалось @Sotirios, мне нужно было закодировать мой URL-адрес перед отправкой его на сервер.

Когда я сделал это, что начал работать

curl -H"Content-Type: application/json" -H"BEARER: 792345452:78f7f8a4-a8c9-454a-93a8-6633a1076781:169000000" "https://myapp.com/rest/categories/groups/Food%20%26%20Drink" 

[{"id":"9b1e97f2-ac7d-4caf-85fc-476cd97dd6cb","name":"Alcohol & Bars","groupName":"Food & Drink"}] 
+0

Кодировка URL - обычная практика. Вам не только нужно заменить &, но также '' с '% 20' –