2011-04-30 22 views
0

我在客戶端(Android模擬器)上使用了以下代碼。如何在服務器端提取數據?

HttpClient client=new DefaultHttpClient(); 
HttpPost httpPost=new HttpPost("http://117.192.xxx.xxx:8080/System_Alpha/"); 
List pairs=new ArrayList(); 
String strUsername=username.getText().toString(); 
String strPassword=password.getText().toString(); 
pairs.add(new BasicNameValuePair("username", strUsername)); 
pairs.add(new BasicNameValuePair("password", strPassword)); 
httpPost.setEntity(new UrlEncodedFormEntity(pairs)); 
HttpResponse response= client.execute(httpPost); 

我的問題是,在服務器端,我如何提取這些值?那就是用戶名和密碼?

回答

0

這取決於你在服務器端有什麼。

說:如果你有一個Java servlet,你只要在你的doGet(RESP doPost)方法來獲取必要的數據:

final String userName = (String) request.getParameter("userName"); 
final String password = (String) request.getParameter("password"); 

更新1
下面是一個簡單的servlet的例子用於認證與上述兩個參數的用戶,併發送回XML響應:

public class LoginServlet extends HttpServlet 
{ 
    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException 
    { 
     response.setContentType("text/xml"); 
     final ServletOutputStream out = response.getOutputStream(); 
     try 
     { 
      final String userName = (String) request.getParameter("userName"); 
      final String password = (String) request.getParameter("password"); 
      final boolean authenticated = login(userName, password); 
      if (authenticated) 
       out.println("<login><status>SUCCESS</status></login>"); 
      else 
       out.println("<login><status>FAIL</status></login>"); 
     } 
     catch (Exception e) 
     { 
      out.println("<login><status>ERROR</status></login>"); 
     } 
     out.flush(); 
     out.close(); 
    } 

    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException 
    { 
     this.doGet(request, response); 
    } 

    private boolean login(final String userName, final String password) 
    { 
     // TODO: authenticate the user and return the result: true/false 
    } 
} 

在你web.xml您可以通過書面聲明你的servlet:

<servlet> 
    <servlet-name>LoginServlet</servlet-name> 
    <servlet-class>[yourpackagename].LoginServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>LoginServlet</servlet-name> 
    <url-pattern>/LoginServlet/*</url-pattern> 
</servlet-mapping> 

其中[yourpackagename]是你LoginServlet聲明的封裝。

這樣,如果所有這些都位於名爲Try的Web應用程序中,並且您部署了它,則可以通過http訪問您的登錄servlet http://localhost:8080/Try/LoginServlet/

更新2
要從HttpResponse對象檢索數據,您需要:

HttpEntity entity = response.getEntity(); 
final InputStream inputStream = entity.getContent(); 

處理此InputStream取決於它包含什麼樣的數據。

如果您需要String值響應實體:

HttpEntity entity = response.getEntity(); 
final String responseText = EntityUtils.toString(entity); 
+0

@rekaszeru,我沒有我的服務器上的servlet。我想在服務器端做的所有事情是,提取發送的數據並將其放入數據庫中。我的計劃是使用套接字和端口8080聽。 – 2011-04-30 16:12:07

+0

任何教程或示例代碼將是有用的。 – 2011-04-30 16:13:56

+0

你在服務器端有什麼樣的服務器/容器後端引擎? (什麼是你的後端語言?c#/ asp?php?java/jsp?) – rekaszeru 2011-04-30 16:18:57

相關問題