1. 发送请求到服务器有几种方式

(1)HttpURLConnection

(2)Httpclient 同步框架

(3)AsyncHttpClient 异步框架 (https://github.com/loopj/android-async-http 下载源码和lib包)

示例代码(3)示例 (最简便实用)

public void asyncGet(View v){
final String username = et_username.getText().toString().trim();
final String password = et_password.getText().toString().trim();
String uri = "http://192.168.1.100:8080/TestLogin/servlet/Login?"
+ "username=" + URLEncoder.encode(username)
+ "&password=" + URLEncoder.encode(password); AsyncHttpClient client = new AsyncHttpClient();
client.get(uri, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(String response) {
Toast.makeText(MainActivity.this, response, Toast.LENGTH_SHORT).show();
} @Override
public void onFailure(Throwable error, String content) {
Toast.makeText(MainActivity.this, content, Toast.LENGTH_SHORT).show();
} });
} public void asyncPost(View v){
final String username = et_username.getText().toString().trim();
final String password = et_password.getText().toString().trim();
String uri = "http://192.168.1.100:8080/TestLogin/servlet/Login"; AsyncHttpClient client = new AsyncHttpClient();
RequestParams params = new RequestParams();
params.put("username", username);
params.put("password", password); client.post(uri, params, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(String response) {
Toast.makeText(MainActivity.this, response, Toast.LENGTH_SHORT).show();
} @Override
public void onFailure(Throwable error, String content) {
Toast.makeText(MainActivity.this, content, Toast.LENGTH_SHORT).show();
} });
}

示例代码 (1)(2)示例

public class MainActivity extends Activity {
private EditText et_password;
private EditText et_username; public void loginByGet(View paramView) {
String str1 = this.et_password.getText().toString().trim();
String str2 = this.et_username.getText().toString().trim();
if ((TextUtils.isEmpty(str1)) || (TextUtils.isEmpty(str2))) {
Toast.makeText(this, "用户名密码不能为空", 1).show();
return;
}
try {
String str3 = String
.valueOf("http://192.168.1.100:8080/web/LoginServlet?");
StringBuilder localStringBuilder1 = new StringBuilder(str3)
.append("name=");
String str4 = URLEncoder.encode(str2, "UTF-8");
StringBuilder localStringBuilder2 = localStringBuilder1
.append(str4).append("&password=");
String str5 = URLEncoder.encode(str1, "UTF-8");
String str6 = str5;
HttpURLConnection localHttpURLConnection = (HttpURLConnection) new URL(
str6).openConnection();
localHttpURLConnection.setRequestMethod("GET");
localHttpURLConnection.setConnectTimeout(5000);
localHttpURLConnection
.setRequestProperty(
"User-Agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727)");
if (localHttpURLConnection.getResponseCode() == 200) {
String str7 = StreamTools.readFromStream(localHttpURLConnection
.getInputStream());
Toast.makeText(this, str7, 1).show();
return;
}
} catch (Exception localException) {
localException.printStackTrace();
Toast.makeText(this, "登陆失败", 1).show();
return;
}
Toast.makeText(this, "登陆失败,http响应吗不正确.", 1).show();
} public void loginByPost(View paramView) {
String str1 = this.et_password.getText().toString().trim();
String str2 = this.et_username.getText().toString().trim();
if ((TextUtils.isEmpty(str1)) || (TextUtils.isEmpty(str2))) {
Toast.makeText(this, "用户名密码不能为空", 1).show();
return;
}
try {
HttpURLConnection localHttpURLConnection = (HttpURLConnection) new URL(
"http://192.168.1.100:8080/web/LoginServlet")
.openConnection();
localHttpURLConnection.setRequestMethod("POST");
localHttpURLConnection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
StringBuilder localStringBuilder1 = new StringBuilder("name=");
String str3 = URLEncoder.encode(str2, "UTF-8");
StringBuilder localStringBuilder2 = localStringBuilder1
.append(str3).append("&password=");
String str4 = URLEncoder.encode(str1, "UTF-8");
String str5 = str4;
String str6 = String.valueOf(str5.length());
String str7 = str6;
localHttpURLConnection.setRequestProperty("Content-Length", str7);
//允许对外写数据
localHttpURLConnection.setDoOutput(true);
OutputStream localOutputStream = localHttpURLConnection
.getOutputStream();
byte[] arrayOfByte = str5.getBytes();
localOutputStream.write(arrayOfByte);
localOutputStream.flush();
if (localHttpURLConnection.getResponseCode() == 200) {
String str8 = StreamTools.readFromStream(localHttpURLConnection
.getInputStream());
Toast.makeText(this, str8, 1).show();
localOutputStream.close();
return;
}
} catch (Exception localException) {
Toast.makeText(this, "post登陆失败", 1).show();
return;
}
Toast.makeText(this, "post登陆失败,http响应吗不正确.", 1).show();
} protected void onCreate(Bundle paramBundle) {
super.onCreate(paramBundle);
setContentView(R.layout.activity_main);
EditText localEditText1 = (EditText) findViewById(R.id.et_username);
this.et_username = localEditText1;
EditText localEditText2 = (EditText) findViewById(R.id.et_password);
this.et_password = localEditText2;
} /**
* 采用httpclient的方式 用get提交数据到服务器
*/ public void loginByClientGet(View view) {
String password = et_password.getText().toString().trim();
String name = et_username.getText().toString().trim();
if (TextUtils.isEmpty(name) || TextUtils.isEmpty(password)) {
Toast.makeText(this, "用户名密码不能为空", 1).show();
return;
}
// 1.打开浏览器
HttpClient client = new DefaultHttpClient();
// 2.输入浏览器的地址
String uri = "http://192.168.1.100:8080/web/LoginServlet?" + "name="
+ URLEncoder.encode(name) + "&password="
+ URLEncoder.encode(password);
HttpGet httpGet = new HttpGet(uri);
// 3.敲回车.
try {
HttpResponse response = client.execute(httpGet);
int code = response.getStatusLine().getStatusCode();
if (code == 200) {
InputStream is = response.getEntity().getContent();
String result = StreamTools.readFromStream(is);
Toast.makeText(this, result, 1).show();
} else {
Toast.makeText(this, "服务器异常", 1).show();
}
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "访问网络异常", 1).show();
} } /**
* 采用httpclient post数据到服务器
*/
public void loginByClientPost(View view) {
String password = et_password.getText().toString().trim();
String name = et_username.getText().toString().trim();
if (TextUtils.isEmpty(name) || TextUtils.isEmpty(password)) {
Toast.makeText(this, "用户名密码不能为空", 1).show();
return;
}
try {
// 1.创建一个浏览器
HttpClient client = new DefaultHttpClient();
// 2.准备一个连接
HttpPost post = new HttpPost(
"http://192.168.1.100:8080/web/LoginServlet");
// 要向服务器提交的数据实体
List<NameValuePair> parameters = new ArrayList<NameValuePair>();
parameters.add(new BasicNameValuePair("name", name));
parameters.add(new BasicNameValuePair("password", password));
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(parameters,
"utf-8");
post.setEntity(entity);
// 3.敲回车
HttpResponse response = client.execute(post);
int code = response.getStatusLine().getStatusCode();
if (code == 200) {
InputStream is = response.getEntity().getContent();
String result = StreamTools.readFromStream(is);
Toast.makeText(this, result, 1).show();
} else {
Toast.makeText(this, "服务器异常", 1).show();
}
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "client post 失败", 1).show();
} }
}

Android -- 提交数据到服务器,Get Post方式, 异步Http框架提交的更多相关文章

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

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

  2. Android 采用get方式提交数据到服务器

    首先搭建模拟web 服务器,新建动态web项目,servlet代码如下: package com.wuyudong.web; import java.io.IOException; import ja ...

  3. Android提交数据到服务器的两种方式四种方法

    本帖最后由 yanghe123 于 2012-6-7 09:58 编辑 Android应用开发中,会经常要提交数据到服务器和从服务器得到数据,本文主要是给出了利用http协议采用HttpClient方 ...

  4. Android 采用HttpClient提交数据到服务器

    在前几篇文章中<Android 采用get方式提交数据到服务器><Android 采用post方式提交数据到服务器>介绍了android的两种提交数据到服务器的方法 本文继续介 ...

  5. Android(java)学习笔记210:采用post请求提交数据到服务器(qq登录案例)

    1.POST请求:  数据是以流的方式写给服务器 优点:(1)比较安全 (2)长度不限制 缺点:编写代码比较麻烦   2.我们首先在电脑模拟下POST请求访问服务器的场景: 我们修改之前编写的logi ...

  6. Android(java)学习笔记153:采用post请求提交数据到服务器(qq登录案例)

    1.POST请求:  数据是以流的方式写给服务器 优点:(1)比较安全 (2)长度不限制 缺点:编写代码比较麻烦   2.我们首先在电脑模拟下POST请求访问服务器的场景: 我们修改之前编写的logi ...

  7. Android(java)学习笔记209:采用get请求提交数据到服务器(qq登录案例)

    1.GET请求:    组拼url的路径,把提交的数据拼装url的后面,提交给服务器. 缺点:(1)安全性(Android下提交数据组拼隐藏在代码中,不存在安全问题)  (2)长度有限不能超过4K(h ...

  8. Android(java)学习笔记152:采用get请求提交数据到服务器(qq登录案例)

    1.GET请求:    组拼url的路径,把提交的数据拼装url的后面,提交给服务器. 缺点:(1)安全性(Android下提交数据组拼隐藏在代码中,不存在安全问题)  (2)长度有限不能超过4K(h ...

  9. 采用httpclient提交数据到服务器

    1)Get提交数据 效果演示:

随机推荐

  1. Apache2.4部署python3.6+django2.0项目

    一.安装apache Apache是非常有名的web服务器软件,如果想让我们web项目运行几乎离不开它. Apache官方网站:http://httpd.apache.org/ 根据自己的环境,选择相 ...

  2. python学习笔记(二十一)构造函数和析构函数

    python中的特殊方法,其中两个,构造函数和析构函数的作用: 比说“__init__”这个构造函数,具有初始化的作用,也就是当该类被实例化的时候就会执行该函数.那么我们就可以把要先初始化的属性放到这 ...

  3. Storm程序永久代内存溢出

    在集群中部署Storm应用程序的时候报错,并通过jdk自带的jconsole监控发现,永久代内存瞬间爆炸了 org.springframework.beans.factory.BeanCreation ...

  4. MySQL协议分析(1)

    MySQL协议分析 此阶段的协议分析是在未压缩未加密情况下的协议分析 思路: 结合Oracle官网和自己用wireshark抓的网络数据包进行协议分析 官网说明 mysql包共分为4段,格式如下: 第 ...

  5. notepade++使用

    Notepad++也可以实现双视图/双窗口对比显示,目前最新版本(6.32)只能支持双视图显示,而且只能支持左右视图,希望后续版本能得到改进. 我们打开两个需要对比显示的源文件 默认的情况下是分成了两 ...

  6. 编辑器——vscode

    1.编辑器个人工作配置 // 将设置放入此文件中以覆盖默认设置 { "editor.tabSize": 2, "workbench.iconTheme": &q ...

  7. 82. Remove Duplicates from Sorted List II(删除有序链表中的重复元素)

    Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numb ...

  8. Pyspark访问Hbase

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl/p/7347167.html 转载请注明出处 记录自己最近抽空折腾虚拟机环境时用spark2.0的pyspark ...

  9. Win32GUI代码示例

    // Win32UI.cpp : 定义应用程序的入口点. // #include "stdafx.h" #include "Win32UI.h" #includ ...

  10. weblogic控制台部署web项目图解

    图解网址:http://jingyan.baidu.com/article/c74d6000650d470f6b595d72.html