2015-04-17 4 views
5

Я использую весенний каркас. У меня есть веб-сервиса в Wepsphere сервере, как этотВозврат JsonObject весной restful webservice

@RequestMapping (value="/services/SayHello2Me" , method=RequestMethod.GET, headers="Accept=application/json") 
@ResponseBody 
public JSONObject SayHello2Me(HttpServletRequest request) throws Exception { 
    String input = (String) request.getParameter("name"); 
    String output = "hello " + input + " :)"; 
    JSONObject outputJsonObj = new JSONObject(); 
    outputJsonObj.put("output", output); 
     return outputJsonObj; 
     } 

Когда я называю это сформировать Chrome как http://myserver/services/sayHello2Me?name= 'Барис', он возвращает мне эту ошибку:

Ошибка 404: SRVE0295E: Ошибка сообщила: 404

Если изменить annotions в моем WebService как тот

@RequestMapping (value="/services/SayHello2Me") 
@ResponseBody 
public JSONObject SayHello2Me(HttpServletRequest request) throws Exception { 

    String input = (String) request.getParameter("name"); 
    String output = "hello " + input + " :)"; 
    JSONObject outputJsonObj = new JSONObject(); 
    outputJsonObj.put("output", output); 

    return outputJsonObj; 
    } 

тогда, когда я называю его образованием Chrome, как http://myserver/services/sayHello2Me?name= 'Барис', он возвращает мне эту ошибку:

Ошибка 406: сообщение об ошибке:: SRVE0295E 406

Там есть проблема JSONObject, потому что если я return String insted jsonobject в том же web-сервисе, он возвращает меня успешно.

Как я могу вернуть Jsonobject в весенний спокойный webservice?

+0

Отображение не совпадает. Когда вы меняете его на одно и то же в обоих местах, это нормально? – kamirru

+0

Все сопоставления соответствуют. Просто я ошибся при написании здесь. Я обновил свой вопрос. – neverwinter

+0

Почему бы вам просто не вернуть POJO? Джексон обрабатывает остальные и генерирует строку JSON. – mtyurt

ответ

6

406-Не Приемлемый ответ

вы должны использовать return outputJsonObj.toString(); попробовать ниже как

@RequestMapping (value="/services/SayHello2Me") 
@ResponseBody 
public String SayHello2Me(HttpServletRequest request) throws Exception { 

String input = (String) request.getParameter("name"); 
String output = "hello " + input + " :)"; 
JSONObject outputJsonObj = new JSONObject(); 
outputJsonObj.put("output", output); 

return outputJsonObj.toString(); 
} 
+0

Если я это сделаю Я получаю это предупреждение в компиляторе: Тип несоответствия: не может преобразовать из String в JSONObject – neverwinter

+0

, какую библиотеку JSON вы используете? – Pravin

+0

import org.json.JSONException; import org.json.JSONObject; @Pravin – neverwinter

1

Вы можете использовать Джексон:

@RequestMapping (value="/services/SayHello2Me" , method=RequestMethod.GET, produces="application/json") 
+1

Я сделал это, но ничего не изменилось – neverwinter

Смежные вопросы