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. js处理数学经典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一 对兔子,假如兔子都不死,问每个月的兔子总数为多少?

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  2. Android电子书翻页效果实现

    这篇文章是在参考了别人的博客基础上,修改了其中一个翻页bug,并且加了详细注释 先看效果 其中使用了贝赛尔曲线原理,关于贝赛尔曲线的知识,推荐大家看下http://blog.csdn.net/hmg2 ...

  3. django 学习杂记

    django1.9 学习路径 http://python.usyiyi.cn/django/intro/tutorial02.html django 中url路径带参数,在view中应该如何处理 应该 ...

  4. $.unique() 对象组成的数组去掉重复对象

    发现一件事,一个完全由对象组成的数组,用$.unique()方法去掉重复的时候不管用 var arr = [{text:'第一个',value:'1'},{text:'第二个',value:'2'}, ...

  5. MySQL查看当前连接数、连接数和最大连接数

    MySQL查看当前所有连接的详细资料: mysqladmin -u root -p processlist MySQL查看当前连接数(Threads为连接数) mysqladmin -u root - ...

  6. The JRE could not be found.Edit the server and change the JRE location.

    之前更改了了一个较低的jdk的版本看了看一个项目的代码,不知所云,然后再改回来, 混乱之中只要启动Tomcat就出现这种错误,还是无法找到JRE,最后如此解决: 在Windows->Prefer ...

  7. jQuery图片延迟加载插件

    在一些图片较多的页面上,如果图片都一起加载网页的速度会比较慢,而且也浪费流量. 使用图片延时加载插件就解决这些问题. 方法: 引入jquery和插件文件 <script src="jq ...

  8. jQuery对象转换为DOM对象

    第一种方法:借助数组下标来读取jQuery对象集合中的某个DOM元素对象. <script src="Scripts/jquery-1.4.1.js" type=" ...

  9. WPF利用Image实现图片按钮

    之前有一篇文章也是采用了Image实现的图片按钮,不过时间太久远了,忘记了地址.好吧,这里我进行了进一步的改进,原来的文章中需要设置4张图片,分别为可用时,鼠标悬浮时,按钮按下时,按钮不可用时的图片, ...

  10. HTTP常见的状态码

    状态码的职责是当客户端向服务器端发送请求时,描述返回请求结果.借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了什么错误.RFC2616定义的状态码,由3位数字和原因短信组成.数字中的第一位 ...