【实战】(二)android模拟qq登录(apache的httpClient发送get和post请求)
2017-11-05 09:32
981 查看
这里与前文的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;
}
};
};
@Override
public 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 OK
int 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 block
Message 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;
}
};
};
@Override
public 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 OK
int 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 block
Message msg = Message.obtain();
msg.what=ERROR;
mHandler.sendMessage(msg);
e.printStackTrace();
}
};
}.start();
}
}
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;
}
};
};
@Override
public 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 OK
int 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 block
Message 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;
}
};
};
@Override
public 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 OK
int 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 block
Message msg = Message.obtain();
msg.what=ERROR;
mHandler.sendMessage(msg);
e.printStackTrace();
}
};
}.start();
}
}
相关文章推荐
- Android使用Apache HttpClient发送GET、POST请求
- Android使用Apache HttpClient发送GET、POST请求
- java apache commons HttpClient发送get和post请求的学习整理
- Android发送GET和POST以及HttpClient发送POST请求给服务器响应
- 我的Android进阶之旅------>Android发送GET和POST以及HttpClient发送POST请求给服务器响应
- android使用apache httpclient发送post请求
- 使用Apache HttpClient4.x 发送 GET POST 请求
- 【实战】(三)android模拟qq登录(开源框架get和post)
- android内置的HttpClient发送get、post请求用法
- [Socket]利用Android下的HttpClient发送GET && POST请求
- 我的Android进阶之旅------>Android发送GET和POST以及HttpClient发送POST请求给服务器响应
- Java模拟HTTP的Get和Post请求(增强) Apache-httpclient
- java apache commons HttpClient发送get和post请求的学习整理
- 【实战】(一)android模拟qq登录(get和post方法)
- java apache commons HttpClient发送get和post请求的学习整理
- Android HTTP实例 使用GET方法和POST方法发送请求(通过Apache接口实现)
- java apache commons HttpClient发送get和post请求的学习整理
- Android下通过httpClient发送GET和POST请求的实例代码
- java apache commons HttpClient发送get和post请求的学习整理
- java apache commons HttpClient发送get和post请求的学习整理