2013-02-16 1 views
0

Здесь я отправляю данные JSON, используя HttpClient. Но я не могу прочитать данные в другом приложении. Когда я делаю request.getParameter("username"), он возвращает мне null. Оба моих приложения развернуты на одном сервере. Пожалуйста, скажите мне, что я делаю неправильно. Thank youJava HttpClient: Не удалось прочитать данные json в почтовом запросе

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     String username = request.getParameter("username"); 
     String password = request.getParameter("password"); 

     DefaultHttpClient httpClient = new DefaultHttpClient(); 

     HttpPost postRequest = new HttpPost("http://localhost:8080/AuthenticationService/UserIdentificationServlet"); 
     postRequest.setHeader("Content-type", "application/json"); 

     StringEntity input = new StringEntity("{\"username\":\""+username+"\"}"); 
     input.setContentType("application/json"); 
     postRequest.setEntity(input); 

     HttpResponse postResponse = httpClient.execute(postRequest); 

     BufferedReader br = new BufferedReader(new InputStreamReader((postResponse.getEntity().getContent()))); 
     String output; 
     System.out.println("Output from Server .... \n"); 
     while ((output = br.readLine()) != null) { 
      System.out.println(output); 
     } 

     httpClient.getConnectionManager().shutdown(); 
    } 
+0

Вы должны понимать разницу между [применение/х-WWW-форм-urlencoded] (http://stackoverflow.com/questions/4007969/application-x-www-form-urlencoded-or-multipart -форма-данные), т. е. параметры запроса формы ('HttpServletRequest # getParameter()') и имеющие 'application/json', у которого есть тело запроса' json' ('HttpServletRequest # getInputStream()'). –

ответ

1

Если вы хотите использовать request.getParameter, вам необходимо отправить данные в кодированном формате URL.

//this example from apache httpcomponents doc 
List<NameValuePair> formparams = new ArrayList<NameValuePair>(); 
formparams.add(new BasicNameValuePair("param1", "value1")); 
formparams.add(new BasicNameValuePair("param2", "value2")); 
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams, "UTF-8"); 
HttpPost httppost = new HttpPost("http://localhost/handler.do"); 
httppost.setEntity(entity);