本文主要介绍android如何通过HttpClient请求服务器端的内容

一:服务器端代码准备

     web.xml配置文件    
<?xml version="1.0" encoding="ISO-8859-1"?>          androidweb        androidweb           login      com.smart.androidweb.servlet.LoginServlet                 login        /login                index.html        index.xhtml        index.htm        index.jsp    

  2.Servlet代码准备LoginServlet.java
package com.smart.androidweb.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class LoginServlet extends HttpServlet {/** *  */private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// TODO Auto-generated method stub//在网上很有效的解决方法是添加:resp.setCharacterEncoding("UTF-8");//解决不了,后来又搜到一条解决方法是:resp.setHeader("content-type","text/html;charset=UTF-8");String username = req.getParameter("username");String password = req.getParameter("password");PrintWriter writer = resp.getWriter();if("".equals(username) || username == null) {writer.print("用户名不能为空!");return ;}if("".equals(password) || password == null) {writer.print("密码不能为空");return ;}if("testname".equals(username) && "123456".equals(password)) {writer.print("登陆成功");} else {writer.print("登陆失败");}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// TODO Auto-generated method stub//resp.setreqdoGet(req, resp);}}

二:android端代码准备    1)不要忘记在清单文件中添加网络访问权限    
<uses-permission android:name="android.permission.INTERNET">uses-permission>
 2)android开发工具倒入一下两个jar包(没有的可以在网络上搜索下载一下)
httpclient-4.0.1.jar,httpcore-4.0.1.jar
 3)布局文件
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>                                                                                                        
4)java端代码
MainActivity.java
package com.smart.httpclient.activity;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.EditText;import android.widget.Toast;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;import java.io.IOException;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    EditText et_username;    EditText et_password;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        et_username = (EditText)findViewById(R.id.et_username);        et_password = (EditText)findViewById(R.id.et_password);    }    public void onClick(View v) {        if(v.getId() == R.id.bt_cannel) {           loginPost();        } else  if(v.getId() == R.id.bt_submit) {            loginGet();        }    }    /**     * GET方式请求数据     */    public void loginGet() {        new Thread(new Runnable() {            @Override            public void run() {                String username = et_username.getText().toString().trim();                String password = et_password.getText().toString().trim();                //网络请求地址                String urlPath = "http://192.168.1.6:8080/androidweb/login?username="+username+"&password="+password;                //创建客户端请求对象                DefaultHttpClient client = new DefaultHttpClient();                //以GET的方式进行请求                HttpGet get = new HttpGet(urlPath);                try {                    //获取服务器响应对象                    HttpResponse response = client.execute(get);                    //获取请求码200正确,404网址不存在,500服务器程序错误                    int code = response.getStatusLine().getStatusCode();                    if(code == 200) {                       // 功过工具类把response的输出流转换成字符串                        String content = EntityUtils.toString(response.getEntity(),"utf-8");                        //显示获取的内容                        showToast(content);                    }                } catch (IOException e) {                    e.printStackTrace();                }            }        }).start();    }    /**     * Post方式请求数据,为安全起见都用post     */    public void loginPost() {        new Thread(new Runnable() {            @Override            public void run() {                String username = et_username.getText().toString().trim();                String password = et_password.getText().toString().trim();                //网络请求地址                String urlPath = "http://192.168.1.6:8080/androidweb/login";//?username="+username+"&password="+password;                //创建客户端请求对象                DefaultHttpClient client = new DefaultHttpClient();                //以Post的方式进行请求                HttpPost post = new HttpPost(urlPath);                //封装http求取参数                List params = new ArrayList();                NameValuePair pairun = new BasicNameValuePair("username",username);                NameValuePair pairpw = new BasicNameValuePair("password",password);                params.add(pairun);                params.add(pairpw);                try {                    //组装请求内容                    UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params);                    //设置请求参数                    post.setEntity(entity);                    //获取服务器响应对象                    HttpResponse response = client.execute(post);                    //获取请求码200正确,404网址不存在,500服务器程序错误                    int code = response.getStatusLine().getStatusCode();                    if(code == 200) {                        // 功过工具类把response的输出流转换成字符串                        String content = EntityUtils.toString(response.getEntity(),"utf-8");                        //显示获取的内容                        showToast(content);                    }                } catch (Exception e) {                    e.printStackTrace();                }            }        }).start();    }    /**     * 封装吐司方法,使其在任意位置都可显示。     * @param content     */    public void showToast(final String content) {        runOnUiThread(new Runnable() {            @Override            public void run() {                Toast.makeText(getApplicationContext(),content,Toast.LENGTH_LONG).show();            }        });    }}


更多相关文章

  1. android电话拨号器源代码
  2. Android 开发之 定时器 Handler + Runnable方式
  3. Android定时器实现的几种方式
  4. android两种方式实现圆形图片
  5. Anko:Android 代码动态布局的新方案
  6. Android 获取系统权限的代码
  7. 编译代码报出Android library projects cannot be launched错误
  8. 解决Eclipse3.6中Android 代码自动补全卡死的问题
  9. android 下测试网络的丢包率和延迟 的代码

随机推荐

  1. Android(安卓)中屏幕点击事件的实现
  2. Android(安卓)Studio v0.1尝鲜
  3. java websocket client ssl(wss)
  4. ADT在线安装(http://dl-ssl.google.com/an
  5. android之interpolator的用法详解
  6. Android(安卓)ListView
  7. android 去掉listview之间的黑线
  8. Android(安卓)动画的重复播放
  9. 让android应用程序获得system权限
  10. Android(安卓)相关属性