【实战】(二)android模拟qq登录(apache的httpClient发送get和post请求)

来源:互联网 发布:mac pdf 导出图片 编辑:程序博客网 时间:2024/05/21 06:55

这里与前文的get和post请求基本上都是大同小异,主要区别在客户端的源码上,具体的解释在源码中都有,也可参考前文

get方式:

package com.lcz.login_in;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;import java.net.URLEncoder;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import com.lcz.newsclient.utils.StreamTool;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.app.Activity;import android.text.TextUtils;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity implements View.OnClickListener{protected static final int SUCCESS = 0;protected static final int ERROR = 1;private Button login;private EditText ed_number;private EditText ed_pwd;private TextView tv_status;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        login=(Button) findViewById(R.id.login);        login.setOnClickListener(this);                ed_number=(EditText) findViewById(R.id.ed_number);        ed_pwd=(EditText) findViewById(R.id.ed_pwd);        tv_status=(TextView) findViewById(R.id.login_status);    }   private Handler mHandler=new Handler(){   public void handleMessage(Message msg) {   switch (msg.what) {case SUCCESS:String data=(String) msg.obj;tv_status.setText(data);break;case ERROR:Toast.makeText(MainActivity.this, "连接错误", 0).show();break;default:break;}   };   };   @Overridepublic void onClick(View v) {// TODO Auto-generated method stub//获得qq号码和密码,然后登录final String number = ed_number.getText().toString().trim();final String pwd=ed_pwd.getText().toString().trim();if(TextUtils.isEmpty(number)||(TextUtils.isEmpty(pwd))){Toast.makeText(this, "号码或密码不能为空", 0).show();return;}//走到这里,说明qq号码和密码都输入了,然后需要连接网络new Thread(){public void run() {try {    String path="http://192.168.43.125:8080/Web/servlet/login?";path=path+"number="+URLEncoder.encode(number,"UTF-8")+"&pwd="+URLEncoder.encode(pwd,"UTF-8");//使用面向对象的//客户端游览器HttpClient client=new DefaultHttpClient();//收到的来自于服务器端的响应数据HttpGet get=new HttpGet(path);HttpResponse response = client.execute(get);//http的响应分为响应行、响应头和响应体//HTTP/1.1 200 OKint code = response.getStatusLine().getStatusCode();if(code==200){InputStream in = response.getEntity().getContent();//流转换为字符串String data = StreamTool.decodeStream(in);Message msg = Message.obtain();msg.what=SUCCESS;msg.obj=data;mHandler.sendMessage(msg);}} catch (Exception e) {// TODO Auto-generated catch blockMessage msg = Message.obtain();msg.what=ERROR;mHandler.sendMessage(msg);e.printStackTrace();}};}.start();}    }

post方式:

package com.lcz.login_in;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;import java.net.URLEncoder;import java.util.ArrayList;import java.util.List;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.HttpClient;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 com.lcz.newsclient.utils.StreamTool;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.app.Activity;import android.text.TextUtils;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity implements View.OnClickListener{protected static final int SUCCESS = 0;protected static final int ERROR = 1;private Button login;private EditText ed_number;private EditText ed_pwd;private TextView tv_status;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        login=(Button) findViewById(R.id.login);        login.setOnClickListener(this);                ed_number=(EditText) findViewById(R.id.ed_number);        ed_pwd=(EditText) findViewById(R.id.ed_pwd);        tv_status=(TextView) findViewById(R.id.login_status);    }   private Handler mHandler=new Handler(){   public void handleMessage(Message msg) {   switch (msg.what) {case SUCCESS:String data=(String) msg.obj;tv_status.setText(data);break;case ERROR:Toast.makeText(MainActivity.this, "连接错误", 0).show();break;default:break;}   };   };   @Overridepublic void onClick(View v) {// TODO Auto-generated method stub//获得qq号码和密码,然后登录final String number = ed_number.getText().toString().trim();final String pwd=ed_pwd.getText().toString().trim();if(TextUtils.isEmpty(number)||(TextUtils.isEmpty(pwd))){Toast.makeText(this, "号码或密码不能为空", 0).show();return;}//走到这里,说明qq号码和密码都输入了,然后需要连接网络new Thread(){public void run() {try {    String path="http://192.168.43.125:8080/Web/servlet/login?";path=path+"number="+URLEncoder.encode(number,"UTF-8")+"&pwd="+URLEncoder.encode(pwd,"UTF-8");//使用面向对象的//客户端游览器HttpClient client=new DefaultHttpClient();//指定了发送的请求的方式HttpPost post=new HttpPost(path);//传递给服务器要带过去的参数信息List<NameValuePair> list=new ArrayList<NameValuePair>();//将带过去的参数放到一个nameValuePair中,然后再放到一个list中,然后再将这个list给要带过去的数据实体list.add(new BasicNameValuePair("number", number));list.add(new BasicNameValuePair("pwd", pwd));//设置带给服务器的参数的信息//设置要带给服务器的数据实体post.setEntity(new UrlEncodedFormEntity(list,"UTF-8"));HttpResponse response = client.execute(post);//http的响应分为响应行、响应头和响应体//HTTP/1.1 200 OKint code = response.getStatusLine().getStatusCode();if(code==200){InputStream in = response.getEntity().getContent();//流转换为字符串String data = StreamTool.decodeStream(in);Message msg = Message.obtain();msg.what=SUCCESS;msg.obj=data;mHandler.sendMessage(msg);}} catch (Exception e) {// TODO Auto-generated catch blockMessage msg = Message.obtain();msg.what=ERROR;mHandler.sendMessage(msg);e.printStackTrace();}};}.start();}    }



阅读全文
0 0
原创粉丝点击