2014-07-16 1 views
1

나는 현재 안드로이드 응용 프로그램을 개발하는 법을 배우고 있습니다. 내 안드로이드 애플 리케이션에서 서블릿 변수를 구문 분석해야합니다. 나는 HttpResponse를 사용하여 변수를 파싱한다. 하지만 서블릿에서 매개 변수를 받아들이는 방법을 모르겠습니다.서블릿의 HttpResponse에서 어떻게 컨텐츠를 가져 옵니까?

이것은 안드로이드 애플리케이션의 코드입니다.

// Create a new HttpClient and Post Header 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost("http://<ip_address>:8080/GetPhoneNumber/GetPhoneNumberServletServlet"); 

      try { 
       // Add your data 
       List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
       nameValuePairs.add(new BasicNameValuePair("phoneNum", "12345678")); 
       httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

       // Execute HTTP Post Request 
       HttpResponse response = httpclient.execute(httppost); 

      } catch (ClientProtocolException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } // End of onClick method 

서블릿의 doPost/doGet에서 수행 할 작업을 알 수 있습니까? 당신의 doPost 사용 request.getParameter("phoneNum")에서

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    PrintWriter out = response.getWriter(); 
    out.println("Hello Android !!!!"); 
} 

/** 
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
} 

답변

1

.

0

다음 코드가 도움이 될 것으로 생각합니다.

public class CustomHttpClient 
{ 
public static final int HTTP_TIMEOUT = 30 * 1000; 
private static HttpClient mHttpClient; 
private static HttpClient getHttpClient() 
{ 
    if (mHttpClient == null) 
    { 
    mHttpClient = new DefaultHttpClient(); 
    final HttpParams params = mHttpClient.getParams(); 
    HttpConnectionParams.setConnectionTimeout(params, HTTP_TIMEOUT); 
    HttpConnectionParams.setSoTimeout(params, HTTP_TIMEOUT); 
    ConnManagerParams.setTimeout(params, HTTP_TIMEOUT); 
    } 
    return mHttpClient; 
} 
public static String executeHttpPost(String url,ArrayList<NameValuePair> postParameters) throws Exception 
    { 
    BufferedReader in = null; 
    try 
    { 
     HttpClient client = getHttpClient(); 
     HttpPost request = new HttpPost(url); 
     UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters); 
     request.setEntity(formEntity); 
     HttpResponse response = client.execute(request); 
     in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 
     StringBuffer sb = new StringBuffer(""); 
     String line = ""; 
     String NL = System.getProperty("line.separator"); 
     while ((line = in.readLine()) != null) { 
     sb.append(line + NL); 
    } 
    in.close(); 
    String result = sb.toString(); 
    return result; 
    } 
    finally 
    { 
    if (in != null) 
    { 
    try 
     { 
     in.close(); 
     } 
    catch (IOException e) 
     { 
     Log.e("log_tag", "Error converting result "+e.toString()); 
     e.printStackTrace(); 
     } 
    } 
    } 
} 
public static String executeHttpGet(String url) throws Exception 
    { 
     BufferedReader in = null; 
     try 
      { 
       HttpClient client = getHttpClient(); 
       HttpGet request = new HttpGet(); 
       request.setURI(new URI(url)); 
       HttpResponse response = client.execute(request); 
       in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 
       StringBuffer sb = new StringBuffer(""); 
       String line = ""; 
       String NL = System.getProperty("line.separator"); 
       while ((line = in.readLine()) != null) { 
       sb.append(line + NL); 
      } 
    in.close(); 
    String result = sb.toString(); 
    return result; 
    } 
finally 
    { 
     if (in != null) 
      { 
       try 
        { 
         in.close(); 
        } 
       catch (IOException e) 
        { 
         Log.e("log_tag", "Error converting result "+e.toString()); 
         e.printStackTrace(); 
        } 
      } 
    } 
    } 
} 

부가 기능 : -

를 사용하여 아래의 JSON 파서 클래스 : -

이제 서버에 아무것도 보내려면
public class JSONParser { 

    static InputStream is = null; 
    static JSONObject jObj = null; 
    static String json = ""; 

    // constructor 
    public JSONParser() { 

    } 

    // function get json from url 
    // by making HTTP POST or GET mehtod 
    public JSONObject makeHttpRequest(String url, String method, 
      List<NameValuePair> params) { 

     // Making HTTP request 
     try { 

      // check for request method 
      if(method == "POST"){ 
       // request method is POST 
       // defaultHttpClient 
       DefaultHttpClient httpClient = new DefaultHttpClient(); 
       HttpPost httpPost = new HttpPost(url); 
       httpPost.setEntity(new UrlEncodedFormEntity(params)); 

       HttpResponse httpResponse = httpClient.execute(httpPost); 
       HttpEntity httpEntity = httpResponse.getEntity(); 
       is = httpEntity.getContent(); 

      }else if(method == "GET"){ 
       // request method is GET 
       DefaultHttpClient httpClient = new DefaultHttpClient(); 
       String paramString = URLEncodedUtils.format(params, "utf-8"); 
       url += "?" + paramString; 
       HttpGet httpGet = new HttpGet(url); 

       HttpResponse httpResponse = httpClient.execute(httpGet); 
       HttpEntity httpEntity = httpResponse.getEntity(); 
       is = httpEntity.getContent(); 
      }   


     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     try { 
      BufferedReader reader = new BufferedReader(new InputStreamReader(
        is, "iso-8859-1"), 8); 
      StringBuilder sb = new StringBuilder(); 
      String line = null; 
      while ((line = reader.readLine()) != null) { 
       sb.append(line + "\n"); 
      } 
      is.close(); 
      json = sb.toString(); 
      Log.d("json data",json.toString()); 
     } catch (Exception e) { 
      Log.e("Buffer Error", "Error converting result " + e.toString()); 
     } 

     // try parse the string to a JSON object 
     try { 
      jObj = new JSONObject(json); 
     } catch (JSONException e) { 
      Log.e("JSON Parser", "Error parsing data " + e.toString()); 
     } 

     // return JSON String 
     return jObj; 

    } 
} 

, 당신은 사용자 이름과 암호에 저장해야 말 JSON Parser와 PHP를 사용하는 서버는 모든 스레드 또는 Async 작업의 doInBackground 메서드에서 아래의 코드를 사용합니다.

ArrayList<NameValuePair> Insert = new ArrayList<NameValuePair>(); 
        Insert.add(new BasicNameValuePair("User_Name","<Sting denoting username>")); 
        Insert.add(new BasicNameValuePair("Password","<Sting denoting Password>)); 

        try 
        { 
         HttpClient httpclient = new DefaultHttpClient(); 
         HttpPost httppost = new HttpPost("http://server path/yourphpfile.php"); 
         httppost.setEntity(new UrlEncodedFormEntity(Insert)); 
         HttpResponse response = httpclient.execute(httppost); 
         HttpEntity entity = response.getEntity(); 
         is = entity.getContent(); 
        } 
        catch(Exception e) 
        { 
         Log.e("log_tag", "Error in http connection"+e.toString()); 
        } 

이제이 값은 다시 사용자가 스레드 또는 비동기 작업의 doInBackground 방법 다시 코드를 다음, JSON 파서에서 get 메소드를 사용하여 필요한 경우.

public class CountDownTask extends AsyncTask<Void,Void , Void> 
    { 
     protected void onPreExecute() 
     { 
      count = 0; 
      S_Store_Id = null; S_Store_Name = null;S_Store_Address = null; S_Store_Phone= null; 
      Offers = null; Descriptions = null; 
     } 
     protected Void doInBackground(Void... params) 
     { 

      ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>(); 
      postParameters.add(new BasicNameValuePair("User_Name",StringUserName)); 
      String response = null; 
      try 
      { 
       response = CustomHttpClient.executeHttpPost("http://yourserverpath/yourphpfilefor retrivingdata.php",postParameters); 
       String result = response.toString(); 
       try 
       { 
        JSONArray jArray = new JSONArray(result); 

        JSONObject json_data = jArray.getJSONObject(0); 

        StringUserName = json_data.getString("User_Name"); 
        StringPassword = json_data.getString("Password"); 

        json_data = jArray.getJSONObject(1); 
        } 
       catch(JSONException e) 
       { 
        Log.e("log_tag", "Error parsing data "+e.toString()); 
       } 
      } 
      catch (Exception e) 
      { 
       Log.e("log_tag","Error in http connection!!" + e.toString());  
      } 
      return null; 
     } 

는 이제 해당 PHP 파일에 서버에서 데이터를 삽입하고 가져 오는 중 오류에 대한 논리를 작성하고 서버에서 데이터를 사용하기 위해 사용할 수 있습니다. 이 메서드는 HTTP 요청 및 응답의 HTTP Get 및 Post 메서드와 동일하게 작동합니다.

방금 ​​이유를 다음 돈을 구문 분석하고 보내거나 서버에서 아무 것도 얻을 필요가있는 경우

+0

내가 잘 서블릿 –

+1

내 doPost 메소드에서이를 구현하려면 어떻게 ... .. 당신을 도울 수 감사합니다 희망 JSON 구문 분석기를 사용하지 마십시오. 그것은 당신의 문제를 해결할 것입니다. –

+0

당신의 제안을 요구하십시오. php 또는 java 서블릿으로 구현하기가 더 쉽습니다. 내가 자바에 익숙하기 때문에, 내가 온라인에서 어떤 것을 보았을 때 PHP가 더 쉬울 지 확신 할 수 없다. –

관련 문제