码迷,mamicode.com
首页 > 移动开发 > 详细

android中的HttpURLConnection和HttpClient实现app与pc数据交互

时间:2014-08-17 15:31:42      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:android   style   blog   http   color   java   os   io   

   自学android的这几天很辛苦,但是很满足,因为每当学到一点点知识点都会觉得很开心,觉得今天是特别有意义的,可能这个就是一种莫名的热爱吧。

 下面来说说今天学习的HttpURLConnection和HttpClient的区别吧,其实这2种都能进行客户端和服务器的数据交互,只是HttpClient封装的更完全。

   先看下案例吧

 第一种HttpURLConnection访问服务器:

 客服端代码:

  

package com.example.demo01;

import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

@SuppressLint("NewApi")
public class MainActivity extends Activity {

    private EditText unameTxt, pwdTxt;
    private Button loginBtn;
    private static String serverPath = "http://tplovejava.xicp.net/uploadApp/HttpTestServlet";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
                 //手机安装能访问
        StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()       
        .detectDiskReads()       
        .detectDiskWrites()       
        .detectNetwork()   // or .detectAll() for all detectable problems       
        .penaltyLog()       
        .build());       
                //手机安装能访问
        StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()       
                .detectLeakedSqlLiteObjects()    
                .penaltyLog()       
                .penaltyDeath()       
                .build());  
        setContentView(R.layout.activity_main);
        unameTxt = (EditText) findViewById(R.id.user);
        pwdTxt = (EditText) findViewById(R.id.pasd);
        loginBtn = (Button) findViewById(R.id.submit);
        loginBtn.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                String uname = unameTxt.getText().toString();
                String pwd = pwdTxt.getText().toString();
                //HttpURLConnection处理服务端与客户端交互
                try {
                    URL url = new URL(serverPath);
                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                                        //设置输入
                    conn.setDoInput(true);
                                        //设置输出
                    conn.setDoOutput(true);
                                        //设置缓存
                    conn.setUseCaches(false);
                                        //设置POST
                    conn.setRequestMethod("POST");
                    OutputStream os = conn.getOutputStream();
                    PrintWriter pw = new PrintWriter(os, true);
                    pw.println(1245);
                    
                                        //返回响应 成功200
                    int responseCode = conn.getResponseCode();
                    System.out.print(responseCode);
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    public String dealEncode(String str){
        String encode = "";
        try {
            encode = URLEncoder.encode(str, "utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return encode;
    }
}
        

 

第二种 HttpClient

HttpClient client = new DefaultHttpClient();
                try {
                    //设置参数集合
                    List<NameValuePair> params = new ArrayList<NameValuePair>();
                    params.add(new BasicNameValuePair("uname", uname));
                    params.add(new BasicNameValuePair("pwd", pwd));
                    
                    //post连接
                    HttpPost httpPost = new HttpPost(serverPath);
                    httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
                    HttpResponse response = client.execute(httpPost);
                    
                    if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
                        String str = EntityUtils.toString(response.getEntity(), "utf-8");
                        Log.i("info", str);
                    }
                } catch (ClientProtocolException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

 

服务器:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setCharacterEncoding("utf-8");
        PrintWriter pw = response.getWriter();
        String uname = request.getParameter("uname");
        String pwd = request.getParameter("pwd");
        /*InputStream is = request.getInputStream();
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);
        System.out.println(br.readLine());*/
        if("zs".equals(uname) && "123".equals(pwd)){
            pw.print("成功");
        }else{
            pw.print("失败");
        }
    }

 

android中的HttpURLConnection和HttpClient实现app与pc数据交互,布布扣,bubuko.com

android中的HttpURLConnection和HttpClient实现app与pc数据交互

标签:android   style   blog   http   color   java   os   io   

原文地址:http://www.cnblogs.com/tplovejava/p/3917802.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!