Android HttpClient框架get和post方式提交数据(非原创)
1.fragment_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/et_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入用户名" /> <EditText
android:id="@+id/et_pass"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入密码" /> <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="getClick"
android:text="使用get方式提交" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="postClick"
android:text="使用post方式提交" /> </LinearLayout>
2.MainActivity.java
package com.example.httpclient; import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List; import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.StatusLine;
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.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast; import com.example.utils.Utils; public class MainActivity extends Activity {
private EditText et_name;
private EditText et_pass;
// 创建消息处理器来对消息进行处理
Handler handler = new Handler() {
// 重写方法来
public void handleMessage(android.os.Message msg) {
Toast.makeText(MainActivity.this, msg.obj.toString(), 0).show();
}
}; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_main);
// 不能放在类的开头初始化,否则会出现空指针异常,先加载再初始化,不然找不到R.id.et_name
et_name = (EditText) findViewById(R.id.et_name);
// 不能放在类的开头初始化,否则会出现空指针异常,先加载再初始化,不然找不到R.id.et_pass
et_pass = (EditText) findViewById(R.id.et_pass);
} public void getClick(View v) {
// 由于不能在主线程中访问网络,所以需要开一个子线程来访问网络
Thread t = new Thread() {
@Override
public void run() {
// 获取输入的用户名
String name = et_name.getText().toString();
// 获取输入的密码
String pass = et_pass.getText().toString();
String url = "http://192.168.1.15:8080/server/serverServlet?name=" + name + "&pass=" + pass;
// 1.创建HttpClient对象,HttpClient是一个接口,可以使用向上转型来创建对象
HttpClient client = new DefaultHttpClient();
// 2.创建HttpGet对象,构造方法的参数就是网址
HttpGet httpGet = new HttpGet(url);
try {
// 3.使用客户端对象,把get请求的对象发送出去
HttpResponse response = client.execute(httpGet);
// 4.拿到响应头中的状态行
StatusLine line = response.getStatusLine();
// 5.根据状态行中服务端返回的状态码来进行判断是否响应成功
if (line.getStatusCode() == 200) {
// 6.拿到返回的响应头的实体
HttpEntity entity = response.getEntity();
// 7.拿到实体的内容,其实就是服务器返回的输入流
InputStream is = entity.getContent();
// 8.从指定的流总读取数据
String text = Utils.getTextFromStream(is);
// 9.创建消息对象
Message msg = handler.obtainMessage();
// 10.使用消息对象携带数据
msg.obj = text;
// 11.使用消息机制发送消息给主线程,让主线程来刷新UI
handler.sendMessage(msg);
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
};
// 启动线程
t.start();
} // post方式提交
public void postClick(View v) {
Thread t = new Thread() {
@Override
public void run() {
try {
// 获取输入的用户名
String name = et_name.getText().toString();
// 获取输入的密码
String pass = et_pass.getText().toString();
// 定好网址
String url = "http://192.168.1.15:8080/server/serverServlet?name=" + name + "&pass=" + pass;
// 1.创建httpClient对象
HttpClient client = new DefaultHttpClient();
// 2.创建HttpPost对象
HttpPost post = new HttpPost(url);
// 3.将要提交的数据封装到BasicNameValuePair对象中,封装用户名
BasicNameValuePair bnvp_name = new BasicNameValuePair("name", name);
// 3.将要提交的数据封装到BasicNameValuePair对象中,封装密码
BasicNameValuePair bnvp_pass = new BasicNameValuePair("pass", pass);
// 4.创建list集合,集合中存放的元素必须是继承了NameValuePair类的对象的引用
List<NameValuePair> parameters = new ArrayList<NameValuePair>();
// 5.将封装好要发送到服务端的数据添加到集合中
parameters.add(bnvp_name);
parameters.add(bnvp_pass);
// 6.创建UrlEncodedFormEntity对象,携带要发送到服务器的数据,并执行URL的编码,需要将name和pass编码然后再发送到服务端
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(parameters, "utf-8");
// 7.设置实体,这个实体中携带有要发送的数据
post.setEntity(entity);
// 8.使用客户端发送post请求
HttpResponse response = client.execute(post);
// 9.如果成功接收到服务端返回的状态码
if (response.getStatusLine().getStatusCode() == 200) {
// 10.获取服务端发回的实体中包含的输入流
InputStream is = response.getEntity().getContent();
// 11.从输入流中读取服务端发回的数据
String text = Utils.getTextFromStream(is);
// 12.获取消息
Message msg = handler.obtainMessage();
// 13.使用消息来携带数据
msg.obj = text;
// 14.使用消息机制,发送消息到主线程,让主线程来刷新ui
handler.sendMessage(msg);
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
t.start();
}
}
3.Utils.java
package com.example.utils; import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream; public class Utils { public static String getTextFromStream(InputStream is) {
byte[] buf = new byte[1024];
int len = -1;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
String text = "";
try {
while ((len = is.read(buf)) != -1) {
baos.write(buf, 0, len);
}
text = new String(baos.toByteArray(),"UTF-8");
} catch (IOException e) {
e.printStackTrace();
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (baos != null) {
try {
baos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return text;
}
}
4.添加网络权限
<uses-permission android:name="android.permission.INTERNET" />
Android HttpClient框架get和post方式提交数据(非原创)的更多相关文章
- Android(java)学习笔记213:开源框架post和get方式提交数据(qq登录案例)
1.前面提到Http的get/post方式 . HttpClient方式,实际工作的时候不常用到,因为这些方式编写代码是很麻烦的 2.Android应用会经常使用http协议进行传输,网上会有很完善 ...
- Android(java)学习笔记156:开源框架post和get方式提交数据(qq登录案例)
1. 前面提到Http的get/post方式 . HttpClient方式,实际工作的时候不常用到,因为这些方式编写代码是很麻烦的 2. Android应用会经常使用http协议进行传输,网上会有很 ...
- 使用异步httpclient框架做get,post提交数据
1.将异步httpclient框架导入 下载地址:http://download.csdn.net/detail/sinat_32804317/9555641 2.代码实现 public class ...
- HttpClient的get和post方式提交数据的使用
/** * Http工具类 */ public class HttpUtil { // 创建HttpClient对象 public static HttpClient httpClient = new ...
- Android 使用Post方式提交数据(登录)
在Android中,提供了标准Java接口HttpURLConnection和Apache接口HttpClient,为客户端HTTP编程提供了丰富的支持. 在HTTP通信中使用最多的就是GET和POS ...
- Android 使用Post方式提交数据
在Android中,提供了标准Java接口HttpURLConnection和Apache接口HttpClient,为客户端HTTP编程提供了丰富的支持. 在HTTP通信中使用最多的就是GET和POS ...
- Android 采用post方式提交数据到服务器
接着上篇<Android 采用get方式提交数据到服务器>,本文来实现采用post方式提交数据到服务器 首先对比一下get方式和post方式: 修改布局: <LinearLayout ...
- Android学习之Http使用Post方式进行数据提交(普通数据和Json数据)
转自:http://blog.csdn.net/wulianghuan/article/details/8626551 我们知道通过Get方式提交的数据是作为Url地址的一部分进行提交,而且对字节数的 ...
- android 之HttpURLConnection的post,get方式请求数据
get方式和post方式的区别: 1.请求的URL地址不同: post:"http://xx:8081//servlet/LoginServlet" get:http://xxx: ...
随机推荐
- View not attached to window manager
java.lang.IllegalArgumentException: View not attached to window manager 在用ProgressDialog的时候,任务结束后Dis ...
- 浅谈Windows Server APPFABRIC
hi,everyone !真的是好久好久没有update blog了,因为最近忙着备考,没有时间对<数据结构与算法>进行研究学习了.所以,blog一直未更新.today is Friday ...
- 分布式Session共享(一):tomcat+redis实现session共享
一.前言 本文主要测试redis实现session共享的实现方式,不讨论如何让nginx参与实现负载均衡等. 二.环境配置 本测试在Window下进行 name version port Tomcat ...
- C#界面设计疑问2:panel摆放问题
1.问题1是这样的,网友意思让使用一个按键对应显示一个panel 即,http://zhidao.baidu.com/question/1924974374730559427.html 2.那么我在设 ...
- 自定义滚动条 niceScroll 配置参数
配置参数 当调用“niceScroll”你可以传递一些参数来定制视觉方面: cursorcolor - 十六进制改变光标颜色,默认值是“#000000” cursoropacitymin - 改变不透 ...
- mac下升级ruby环境版本
在ios开发中会经常使用到cocoapods来管理第三方框架,在安装cocoapods的时候会涉及到ruby环境,有时候会因为版本过低会导致安装失败,本文主要讲一下如何升级ruby环境 安装rvm,r ...
- JS继承六大模式
1.原型链 function SuperType(){this.property = true;} SuperType.prototype.getSuperValue = function(){ret ...
- 2014年总结:我的IT路
又是一年春节时,转眼之间已经毕业4年,简单回顾一下这几年的职业生涯,希望大家提出宝贵意见. 大学时,几个同学跟着学校网络中心的老师一块做校园网上运行的小系统.偶尔协助一下老师对学校机房.校园网做一下维 ...
- SqlServer 使用小技巧
1.在sqlserver下直接画ER图 步骤:点击数据关系图 右击新建数据关系图这样就ok 了 2,查看表的设计结构或表中的数据 步骤:右击选择设计或查看前百行 3,监测程序对数据库的操作 点击工具 ...
- ucfirst() strtoupper() strtolower()
ucfirst 将字符串第一个字符改大写. 语法: string ucfirst(string str); 返回值: 字符串 函数种类: 资料处理 内容说明 本函数返回字符串 str 第一个字的字 ...