【实战】(二)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
- 【实战】(二)android模拟qq登录(apache的httpClient发送get和post请求)
- 【实战】(一)android模拟qq登录(get和post方法)
- 【实战】(三)android模拟qq登录(开源框架get和post)
- Android使用HttpClient以Post、Get请求服务器发送数据的方式(普通和json)
- Android使用HttpClient以Post、Get请求服务器发送数据的方式(普通和json)
- Android使用HttpClient以Post、Get请求服务器发送数据的方式(普通和json)
- Android使用Apache HttpClient发送GET、POST请求
- java发送post和get请求(1)---HttpClient 方式
- HttpClient 发送GET和POST请求(HTTP)
- 使用Apache HttpClient发送get、post请求
- java使用HttpClient模拟发送http的get、post请求
- Android--httpclient模拟post请求和get请求
- HttpClient模拟get,post请求并发送请求参数(json等)
- HttpClient模拟get,post请求并发送请求参数(json等)
- HttpClient模拟get,post请求并发送请求参数(json等)
- java apache commons HttpClient发送get和post请求的学习整理
- java apache commons HttpClient发送get和post请求的学习整理
- java apache commons HttpClient发送get和post请求的学习整理
- TCP与UDP的区别(转)
- http://www.cnblogs.com/breezedeus/archive/2012/04/10/2440488.html
- caffe FCN Ubuntu16.0
- Servlet 过滤器
- LUOGU P2058 海港题解(附代码)
- 【实战】(二)android模拟qq登录(apache的httpClient发送get和post请求)
- Cohen's kappa coefficient
- N-Queens
- 微服务:Eureka+Zuul+Ribbon+Feign+Hystrix构建微服务架构
- 零点高级PS教程 第3期案实战例教程48节 价值1999元
- xsl笔记1
- 关于Coursera视频不能播放问题
- 基于人工智能的智能化地理信息系统
- 一些常见的专业英语词汇(02)