Android 四种Http协议详解
来源:互联网 发布:淘宝旅行网客服 编辑:程序博客网 时间:2024/05/16 10:22
第一、写服务方法
package com.geek.http.service;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
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.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import android.content.Context;
import android.util.Log;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.geek.http.entity.Users;
public class HttpActivity {
public Context context;
public HttpActivity(Context context) {
this.context = context;
}
// httpUrlConnection的Get方法(Java只有Java的JDK才有)
public Users httpUrlConnectionGet(String path, Map<String, String> params)
throws Exception {
// 创建一个users对象
Users users = null;
// 创建一个StringBuffer实例来拼接请求路径
StringBuffer pathname = new StringBuffer(path);
pathname.append("?");
for (String key : params.keySet()) {
pathname.append(key);
pathname.append("=");
pathname.append(params.get(key));
pathname.append("&");
}
// 把拼接好的请求路径的最后一个字符("&")截取掉
pathname.deleteCharAt(pathname.length() - 1);
// 创建请求路径
URL url = new URL(pathname.toString());
// 打开连接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// 设置连接超时时长
conn.setConnectTimeout(5000);
// 设置请求方式
conn.setRequestMethod("GET");
// 请求成功(相应吗==200)
if (conn.getResponseCode() == 200) {
// 获得服务器返回来的字节输入流,然后把他转换成字符输入流
BufferedReader br = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
// 读一行
String nnem = br.readLine();
Log.d("TAG", "" + nnem);
// 判断是否为空
if (nnem != null) {
ObjectMapper om = new ObjectMapper();
// 把nnem转成实体
users = om.readValue(nnem, Users.class);
}
}
return users;
}
// httpUrlConnection的Get方法(Java只有Java的JDK才有)
public Users httpUrlConnectionpost(String path, Map<String, String> params)
throws Exception {
Users users = null;
// 创建一个StringBuffer实例来拼接属性
StringBuffer pathname = new StringBuffer();
for (String key : params.keySet()) {
pathname.append(key);
pathname.append("=");
pathname.append(params.get(key));
pathname.append("&");
}
// 把拼接好的属性的最后一个字符("&")截取掉
String canshu = pathname.deleteCharAt(pathname.length() - 1).toString();
// 创建请求路径
URL url = new URL(path);
// 打开连接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// 设置请求方式
conn.setRequestMethod("POST");
// 将参数转换成字节数组
byte[] entity = canshu.getBytes();
// 设置允许对外输出数据
conn.setDoOutput(true);
// 对外写出实体数据
OutputStream os = conn.getOutputStream();
os.write(entity);
// 请求成功(相应吗==200)
if (conn.getResponseCode() == 200) {
// 获得服务器返回来的字节输入流,然后把他转换成字符输入流
BufferedReader br = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
// 读一行
String nnem = br.readLine();
Log.d("TAG", "" + nnem);
// 判断是否为空
if (nnem != null) {
ObjectMapper om = new ObjectMapper();
// 把nnem转成实体
users = om.readValue(nnem, Users.class);
}
}
return users;
}
// httpclien的Get请求(Android中独有)
public Users httpClientGet(String path, Map<String, String> params)
throws Exception {
Users users = null;
// 创建一个StringBuffer实例来拼接请求路径
StringBuffer pathname = new StringBuffer(path);
pathname.append("?");
for (String key : params.keySet()) {
pathname.append(key);
pathname.append("=");
pathname.append(params.get(key));
pathname.append("&");
}
// 把拼接好的请求路径的最后一个字符("&")截取掉
String pname = pathname.deleteCharAt(pathname.length() - 1).toString();
// 创建一个浏览器
HttpClient httpClient = new DefaultHttpClient();
// 创建一个HttpGet请求对象
HttpGet request = new HttpGet(pname);
// 执行请求(得到相应对象)
HttpResponse httpResponse = httpClient.execute(request);
// 得到状态行获得状态码(如果==200就表示请求成功)
if (httpResponse.getStatusLine().getStatusCode() == 200) {
// 得到相应的实体
HttpEntity httpEntity = httpResponse.getEntity();
// 得到输出流
InputStream is = httpEntity.getContent();
// 获得服务器返回来的字节输入流,然后把他转换成字符输入流
BufferedReader br = new BufferedReader(new InputStreamReader(is));
// 读一行
String rlb = br.readLine();
if (rlb != null) {
ObjectMapper om = new ObjectMapper();
// 把rlb转成实体
users = om.readValue(rlb, Users.class);
}
}
return users;
}
// httpclien的Post请求(Android中独有)
public Users httpClientPost(String path, Map<String, String> params)
throws Exception {
Users users = null;
// 创建浏览器
HttpClient httpClient = new DefaultHttpClient();
// 创建HttpPost请求
HttpPost request = new HttpPost(path);
// 请求参数
List<NameValuePair> parname = new ArrayList<NameValuePair>();
for (String key : params.keySet()) {
NameValuePair nvp = new BasicNameValuePair(key, params.get(key));
parname.add(nvp);
}
// 创建请求实体
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(parname);
// 设置请求实体
request.setEntity(entity);
// 执行请求(得到相应对象)
HttpResponse httpResponse = httpClient.execute(request);
// 得到状态行获得状态码(如果==200就表示请求成功)
if (httpResponse.getStatusLine().getStatusCode() == 200) {
// 得到相应实体
HttpEntity he = httpResponse.getEntity();
// 得到输入流
InputStream is = he.getContent();
// 获得服务器返回来的字节输入流,然后把他转换成字符输入流
BufferedReader br = new BufferedReader(new InputStreamReader(is));
// 读一行
String shu = br.readLine();
if (shu != null) {
ObjectMapper om = new ObjectMapper();
// 把shu转成实体
users = om.readValue(shu, Users.class);
}
}
return users;
}
}
第二、调用方法
package com.geek.http;
import java.util.HashMap;
import java.util.Map;
import com.geek.http.entity.Users;
import com.geek.http.service.HttpActivity;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
EditText etname, etpwd;
public HttpActivity httpActivity = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
etname = (EditText) findViewById(R.id.name);
etpwd = (EditText) findViewById(R.id.pwd);
}
// http://localhost:8080/SSH001/loginAction!loginForAndroidClient.action
public void denglu(View view) {
System.out.println("----------------");
String http = "http://10.0.2.2:8080/SSH001/loginAction!loginForAndroidClient.action";
Map<String, String> map = new HashMap<String, String>();
map.put("users.name", etname.getText().toString());
map.put("users.pwd", etpwd.getText().toString());
httpActivity = new HttpActivity(this);
Users user = null;
try {
// user = httpActivity.httpUrlConnectionGet(http, map);
// user=httpActivity.httpUrlConnectionpost(http, map);
// user=httpActivity.httpClientGet(http, map);
user = httpActivity.httpClientPost(http, map);
if (user != null) {
Toast.makeText(this, "登陆成功/n", 2000).show();
} else {
Toast.makeText(this, "登陆失败", 2000).show();
Toast.makeText(this, "登陆失败", 1000).show();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
第三、创建一个服务器
package com.geek.server.action;
import java.io.IOException;
import org.apache.struts2.ServletActionContext;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import com.geek.server.entity.Users;
import com.geek.server.service.UsersService;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
private Users users;
private UsersService usersService;
public String login(){
System.out.println("进来了");
System.out.println(users.getName());
System.out.println(users.getPwd());
users= usersService.login(users);
return null;
}
public Users getUsers() {
return users;
}
public void setUsers(Users users) {
this.users = users;
}
public UsersService getUsersService() {
return usersService;
}
public void setUsersService(UsersService usersService) {
this.usersService = usersService;
}
public void loginForAndroidClient(){
users=usersService.login(users);
try {
if(users!=null){
ObjectMapper mapper = new ObjectMapper();
//ServletActionContext.getResponse().getWriter().write(mapper.writeValueAsString(users));
System.out.println(mapper.writeValueAsString(users));
}else {
//ServletActionContext.getResponse().getWriter().write("");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package com.geek.http.service;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
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.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import android.content.Context;
import android.util.Log;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.geek.http.entity.Users;
public class HttpActivity {
public Context context;
public HttpActivity(Context context) {
this.context = context;
}
// httpUrlConnection的Get方法(Java只有Java的JDK才有)
public Users httpUrlConnectionGet(String path, Map<String, String> params)
throws Exception {
// 创建一个users对象
Users users = null;
// 创建一个StringBuffer实例来拼接请求路径
StringBuffer pathname = new StringBuffer(path);
pathname.append("?");
for (String key : params.keySet()) {
pathname.append(key);
pathname.append("=");
pathname.append(params.get(key));
pathname.append("&");
}
// 把拼接好的请求路径的最后一个字符("&")截取掉
pathname.deleteCharAt(pathname.length() - 1);
// 创建请求路径
URL url = new URL(pathname.toString());
// 打开连接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// 设置连接超时时长
conn.setConnectTimeout(5000);
// 设置请求方式
conn.setRequestMethod("GET");
// 请求成功(相应吗==200)
if (conn.getResponseCode() == 200) {
// 获得服务器返回来的字节输入流,然后把他转换成字符输入流
BufferedReader br = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
// 读一行
String nnem = br.readLine();
Log.d("TAG", "" + nnem);
// 判断是否为空
if (nnem != null) {
ObjectMapper om = new ObjectMapper();
// 把nnem转成实体
users = om.readValue(nnem, Users.class);
}
}
return users;
}
// httpUrlConnection的Get方法(Java只有Java的JDK才有)
public Users httpUrlConnectionpost(String path, Map<String, String> params)
throws Exception {
Users users = null;
// 创建一个StringBuffer实例来拼接属性
StringBuffer pathname = new StringBuffer();
for (String key : params.keySet()) {
pathname.append(key);
pathname.append("=");
pathname.append(params.get(key));
pathname.append("&");
}
// 把拼接好的属性的最后一个字符("&")截取掉
String canshu = pathname.deleteCharAt(pathname.length() - 1).toString();
// 创建请求路径
URL url = new URL(path);
// 打开连接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// 设置请求方式
conn.setRequestMethod("POST");
// 将参数转换成字节数组
byte[] entity = canshu.getBytes();
// 设置允许对外输出数据
conn.setDoOutput(true);
// 对外写出实体数据
OutputStream os = conn.getOutputStream();
os.write(entity);
// 请求成功(相应吗==200)
if (conn.getResponseCode() == 200) {
// 获得服务器返回来的字节输入流,然后把他转换成字符输入流
BufferedReader br = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
// 读一行
String nnem = br.readLine();
Log.d("TAG", "" + nnem);
// 判断是否为空
if (nnem != null) {
ObjectMapper om = new ObjectMapper();
// 把nnem转成实体
users = om.readValue(nnem, Users.class);
}
}
return users;
}
// httpclien的Get请求(Android中独有)
public Users httpClientGet(String path, Map<String, String> params)
throws Exception {
Users users = null;
// 创建一个StringBuffer实例来拼接请求路径
StringBuffer pathname = new StringBuffer(path);
pathname.append("?");
for (String key : params.keySet()) {
pathname.append(key);
pathname.append("=");
pathname.append(params.get(key));
pathname.append("&");
}
// 把拼接好的请求路径的最后一个字符("&")截取掉
String pname = pathname.deleteCharAt(pathname.length() - 1).toString();
// 创建一个浏览器
HttpClient httpClient = new DefaultHttpClient();
// 创建一个HttpGet请求对象
HttpGet request = new HttpGet(pname);
// 执行请求(得到相应对象)
HttpResponse httpResponse = httpClient.execute(request);
// 得到状态行获得状态码(如果==200就表示请求成功)
if (httpResponse.getStatusLine().getStatusCode() == 200) {
// 得到相应的实体
HttpEntity httpEntity = httpResponse.getEntity();
// 得到输出流
InputStream is = httpEntity.getContent();
// 获得服务器返回来的字节输入流,然后把他转换成字符输入流
BufferedReader br = new BufferedReader(new InputStreamReader(is));
// 读一行
String rlb = br.readLine();
if (rlb != null) {
ObjectMapper om = new ObjectMapper();
// 把rlb转成实体
users = om.readValue(rlb, Users.class);
}
}
return users;
}
// httpclien的Post请求(Android中独有)
public Users httpClientPost(String path, Map<String, String> params)
throws Exception {
Users users = null;
// 创建浏览器
HttpClient httpClient = new DefaultHttpClient();
// 创建HttpPost请求
HttpPost request = new HttpPost(path);
// 请求参数
List<NameValuePair> parname = new ArrayList<NameValuePair>();
for (String key : params.keySet()) {
NameValuePair nvp = new BasicNameValuePair(key, params.get(key));
parname.add(nvp);
}
// 创建请求实体
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(parname);
// 设置请求实体
request.setEntity(entity);
// 执行请求(得到相应对象)
HttpResponse httpResponse = httpClient.execute(request);
// 得到状态行获得状态码(如果==200就表示请求成功)
if (httpResponse.getStatusLine().getStatusCode() == 200) {
// 得到相应实体
HttpEntity he = httpResponse.getEntity();
// 得到输入流
InputStream is = he.getContent();
// 获得服务器返回来的字节输入流,然后把他转换成字符输入流
BufferedReader br = new BufferedReader(new InputStreamReader(is));
// 读一行
String shu = br.readLine();
if (shu != null) {
ObjectMapper om = new ObjectMapper();
// 把shu转成实体
users = om.readValue(shu, Users.class);
}
}
return users;
}
}
第二、调用方法
package com.geek.http;
import java.util.HashMap;
import java.util.Map;
import com.geek.http.entity.Users;
import com.geek.http.service.HttpActivity;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
EditText etname, etpwd;
public HttpActivity httpActivity = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
etname = (EditText) findViewById(R.id.name);
etpwd = (EditText) findViewById(R.id.pwd);
}
// http://localhost:8080/SSH001/loginAction!loginForAndroidClient.action
public void denglu(View view) {
System.out.println("----------------");
String http = "http://10.0.2.2:8080/SSH001/loginAction!loginForAndroidClient.action";
Map<String, String> map = new HashMap<String, String>();
map.put("users.name", etname.getText().toString());
map.put("users.pwd", etpwd.getText().toString());
httpActivity = new HttpActivity(this);
Users user = null;
try {
// user = httpActivity.httpUrlConnectionGet(http, map);
// user=httpActivity.httpUrlConnectionpost(http, map);
// user=httpActivity.httpClientGet(http, map);
user = httpActivity.httpClientPost(http, map);
if (user != null) {
Toast.makeText(this, "登陆成功/n", 2000).show();
} else {
Toast.makeText(this, "登陆失败", 2000).show();
Toast.makeText(this, "登陆失败", 1000).show();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
第三、创建一个服务器
package com.geek.server.action;
import java.io.IOException;
import org.apache.struts2.ServletActionContext;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import com.geek.server.entity.Users;
import com.geek.server.service.UsersService;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
private Users users;
private UsersService usersService;
public String login(){
System.out.println("进来了");
System.out.println(users.getName());
System.out.println(users.getPwd());
users= usersService.login(users);
return null;
}
public Users getUsers() {
return users;
}
public void setUsers(Users users) {
this.users = users;
}
public UsersService getUsersService() {
return usersService;
}
public void setUsersService(UsersService usersService) {
this.usersService = usersService;
}
public void loginForAndroidClient(){
users=usersService.login(users);
try {
if(users!=null){
ObjectMapper mapper = new ObjectMapper();
//ServletActionContext.getResponse().getWriter().write(mapper.writeValueAsString(users));
System.out.println(mapper.writeValueAsString(users));
}else {
//ServletActionContext.getResponse().getWriter().write("");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
0 0
- Android 四种Http协议详解
- RTSP、HTTP、HTTPS、SDP四种协议详解
- RTSP、HTTP、HTTPS、SDP四种协议详解
- RTSP、HTTP、HTTPS、SDP四种协议详解
- android--Http协议[Get和Post]详解
- Android的HTTP协议的通信详解
- Android Http协议[Get和Post]详解
- Android 网络详解(二) HTTP协议
- 【http】http协议详解
- HTTP协议 (四) 缓存
- HTTP协议 (四) 缓存
- HTTP协议 (四) 缓存
- HTTP协议 (四) 缓存
- HTTP协议 (四) 缓存
- HTTP协议 (四) 缓存
- HTTP协议 (四) 缓存
- HTTP协议 (四) 缓存
- HTTP协议 (四) 缓存
- 黑马程序员--单例模式
- linux 目录结构
- 我的苹果开发帐号(公司型)成功申请经历——不用传真营业执照、免费获取邓白氏编码
- 自定义通讯录详情页面的内容并跳转
- UVA 993 Product of digits
- Android 四种Http协议详解
- 联通电信先后出手
- 一维向量旋转算法
- 搜知乎--我的第一款IOS应用
- cas 单点退出后跳转问题
- ubuntu13.10源码安装php5.5
- MS LinuxOracle11gR2RAC双机安装留念
- hadoop学习笔记之操作mysql数据库
- ArcGIS 10.2新特性介绍:影像