现在的位置: 首页 > 移动开发 > 正文

Android 的网络编程(14)-ttpClient访问服务器的servlet

2019年09月08日 移动开发 ⁄ 共 1791字 ⁄ 字号 评论关闭

登陆页面输入用户名和密码,登陆成功后跳转到主页面,失败时显示错误信息。

 
传递参数时用BasicNameValuePair的List以httpPost.setEntity的方式来做,不能用HttpParams。
 
userName = (EditText) this.findViewById(R.id.editTextUserName);  
password = (EditText) this.findViewById(R.id.editTextPassword);  
errorMsg = (TextView) this.findViewById(R.id.textViewLoginMsg);  
Button loginBtn = (Button) this.findViewById(R.id.btnLogin);  
loginBtn.setOnClickListener(new OnClickListener() {  
  
  
    @Override  
    public void onClick(View arg0) {  
        String result;  
        /* 发送部分 */  
        try {  
            HttpClient httpClient = new DefaultHttpClient();  
            String address = strUrl;  
            HttpPost httpPost = new HttpPost(address);  
            List<BasicNameValuePair> params = new LinkedList<BasicNameValuePair>();  
            params.add(new BasicNameValuePair("username", userName.getText().toString()));  
            params.add(new BasicNameValuePair("password", password.getText().toString()));  
            httpPost.setEntity(new UrlEncodedFormEntity(params, "utf-8")); //将参数填入POST Entity中  
              
            HttpResponse httpResponse = httpClient.execute(httpPost);  
            /* 接收 */  
            if (httpResponse.getStatusLine().getStatusCode() == 200) {  
                result = EntityUtils.toString(httpResponse.getEntity());  
                /* json文本解析 */  
                JSONTokener jsonParser = new JSONTokener(result);  
                  
                JSONObject jsonResult = (JSONObject) jsonParser.nextValue();  
                String status = jsonResult.getString("loginStatus");  
                String outMessage = jsonResult.getString("outMessage");  
                if(status.equals("true")){  
  
  
                    Intent i = new Intent(LoginActivity.this, MainActivity.class);  
                    i.putExtra("username", outMessage);  
                    startActivityForResult(i, FIRST_REQUEST_CODE);  
                } else {  
                    errorMsg.setVisibility(View.VISIBLE);  
                    errorMsg.setText(outMessage);  
                }  
            } else {  
                errorMsg.setVisibility(View.VISIBLE);  
                errorMsg.setText("网络连接问题。CODE:" + httpResponse.getStatusLine().getStatusCode());  
            }  
        } catch (JSONException e) {  
            e.printStackTrace();  
        } catch (UnsupportedEncodingException e) {  
            e.printStackTrace();  
        } catch (ClientProtocolException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
  
  
    }  
});  

抱歉!评论已关闭.