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方式提交数据(非原创)的更多相关文章

  1. Android(java)学习笔记213:开源框架post和get方式提交数据(qq登录案例)

    1.前面提到Http的get/post方式  . HttpClient方式,实际工作的时候不常用到,因为这些方式编写代码是很麻烦的 2.Android应用会经常使用http协议进行传输,网上会有很完善 ...

  2. Android(java)学习笔记156:开源框架post和get方式提交数据(qq登录案例)

    1. 前面提到Http的get/post方式  . HttpClient方式,实际工作的时候不常用到,因为这些方式编写代码是很麻烦的 2. Android应用会经常使用http协议进行传输,网上会有很 ...

  3. 使用异步httpclient框架做get,post提交数据

    1.将异步httpclient框架导入 下载地址:http://download.csdn.net/detail/sinat_32804317/9555641 2.代码实现 public class ...

  4. HttpClient的get和post方式提交数据的使用

    /** * Http工具类 */ public class HttpUtil { // 创建HttpClient对象 public static HttpClient httpClient = new ...

  5. Android 使用Post方式提交数据(登录)

    在Android中,提供了标准Java接口HttpURLConnection和Apache接口HttpClient,为客户端HTTP编程提供了丰富的支持. 在HTTP通信中使用最多的就是GET和POS ...

  6. Android 使用Post方式提交数据

    在Android中,提供了标准Java接口HttpURLConnection和Apache接口HttpClient,为客户端HTTP编程提供了丰富的支持. 在HTTP通信中使用最多的就是GET和POS ...

  7. Android 采用post方式提交数据到服务器

    接着上篇<Android 采用get方式提交数据到服务器>,本文来实现采用post方式提交数据到服务器 首先对比一下get方式和post方式: 修改布局: <LinearLayout ...

  8. Android学习之Http使用Post方式进行数据提交(普通数据和Json数据)

    转自:http://blog.csdn.net/wulianghuan/article/details/8626551 我们知道通过Get方式提交的数据是作为Url地址的一部分进行提交,而且对字节数的 ...

  9. android 之HttpURLConnection的post,get方式请求数据

    get方式和post方式的区别: 1.请求的URL地址不同: post:"http://xx:8081//servlet/LoginServlet" get:http://xxx: ...

随机推荐

  1. hadoop 2.6.0上安装sqoop-1.99.6-bin-hadoop200

    第一步:下载sqoop-1.99.6-bin-hadoop200.tar.gz  地址:http://www.eu.apache.org/dist/sqoop/1.99.6/ 第二步:将下载好的sqo ...

  2. Windows命令行(DOS命令)教程 -1 (转载) http://www.pconline.com.cn/pcedu/rookie/basic/10111/15325.html

    一.命令行简介 命令行就是在Windows操作系统中打开DOS窗口,以字符串的形式执行Windows管理程序. 在这里,先解释什么是DOS? DOS--Disk Operation System 磁盘 ...

  3. Oracle触发器Trigger4触发条件_when的使用

    /* 同一表使用所有条件 Create or replace trigger t5 Before insert,delete,update on 表名 For each row //plsql块 */ ...

  4. 无法捕获的异常:MissingMethodException

    今天一个同事发布站点,一直出现一些稀奇古怪的问题,各种各样的异常都有,根据这些异常去排查代码,都完全正常,很让人郁闷,因为代码里可能出异常的地方都记录了程序日志,所以他一直没去排查系统里的“应用程序日 ...

  5. 慕课linux学习笔记(四)常用命令(1)

    Root 表示当前登录用户 Localhost 主机名 ~ 当前所在位置(~表示/root) # 超级用户 $ 普通用户 命令 1.pwd 显示当前所在位置 2.ls 查询目录中的内容 -a 显示所有 ...

  6. java-web-dom4j解析XML-递归方式

    <?xml version="1.0" encoding="UTF-8"?><书架>  <书 出版日期="2013-10 ...

  7. Go and JSON

    Go and JSON 在使用Go开发web项目的过程中, 数据库读写操作与JSON格式的输入输出是两块最基础的模块, Go的标准库已经帮我们做了很多, 熟悉database/sql与encoding ...

  8. Redis使用(1)---安装

    简介 Redis具体简介可以百度.它可以在Linux和Windows下运行,但官方只提供针对Linux的包,Windows对其也有自己的开发团队. redis官网:http://www.redis.i ...

  9. SEO教程:向百度要流量 第一季

    首先祝贺你:当你看到这篇文章时,你已经站在一条通往SEO达人捷径的路口. 笔者也是今年年初才成为SEOer的一员,在做SEO的过程中,有不少自己独特的心得体会,所以一直酝酿着写一个SEO系列的文章,将 ...

  10. 2015北大夏令营day1 B:An Idea of Mr. A

    题意:给定一个范围l,r计算i,j(i<j)属于这个范围内的gcd(2^(2^i)+1,2^(2^j)+1)的总和. 思路:费马数的应用,让我惊呆的是当年居然有123个人会做,我tm毛都不会.. ...