【Android基础知识】HttpUrlConnection使用doGet和doPost方式和服务器交互

来源:互联网 发布:域名后缀cc 编辑:程序博客网 时间:2024/05/01 01:58

这里介绍HttpUrlConnection使用get方式或post方式和服务器进行数据交互

1.建立服务器端Web程序MyServlet

在doGet方法中调用doPost方法,在doPost方法中接收客户端发送来的数据

public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String name = request.getParameter("name");String age = request.getParameter("age");//response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();out.print("name ="+name+" age= "+age);//new String(name.getBytes("iso-8859-1"),"utf-8"); 转码System.out.println("name ="+name+" age= "+age);}
创建一个Jsp表单
<body>    <form action="MyServlet" method="get">    name:<input type="text" name = "name"/><br/>    age:   <input type="text" name = "age"/><br/>    <input type="submit" value="submit"/>    </form>  </body>
页面如下
发送一个请求后,服务器端返回请求的数据

2.使用Android客户端和服务器进行交互

网络请求线程类,分别使用doGet和doPost方法请求服务器
public class HttpThread extends Thread{String url;String age;String name;public HttpThread(String url,String age,String name){this.url = url;this.age = age;this.name = name;}private void doGet(){//get方式请求数据是在url中拼接的url = url+"?name="+name+"&age="+age;//URLEncoder.encode(name,"utf-8");//转码,防止中文乱码try {URL httpUrl = new URL(url);HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();conn.setReadTimeout(3000);conn.setRequestMethod("GET");BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream()));String str;StringBuffer sb = new StringBuffer();while((str = bufferedReader.readLine())!= null){sb.append(str);}Log.i("meng.li","result: "+sb.toString());} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}private void doPost(){Properties properties = System.getProperties();properties.list(System.out);try {URL httpUrl = new URL(url);HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();conn.setReadTimeout(3000);conn.setRequestMethod("POST");OutputStream out = conn.getOutputStream();String content = "name="+name+"&age="+age;out.write(content.getBytes());BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream()));String str;StringBuffer sb = new StringBuffer();while((str = bufferedReader.readLine())!= null){sb.append(str);}Log.i("meng.li","result: "+sb.toString());} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}@Overridepublic void run() {doGet();//doPost();}}
调用类
public class RegisteActivity extends Activity {private Button regist;private EditText name;private EditText age;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        name = (EditText)findViewById(R.id.name);        age = (EditText)findViewById(R.id.age);        regist = (Button)findViewById(R.id.submit);        regist.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {String url = "http://192.168.199.126:8080/Server/MyServlet";new HttpThread(url, age.getText().toString(), name.getText().toString()).start();}});    }}





0 0
原创粉丝点击