文档章节

Android 网络提交数据(使用Asynchronous Http Client)

维特的烦恼
 维特的烦恼
发布于 2014/01/31 23:46
字数 433
阅读 4365
收藏 10

项目主页及简单使用方法http://loopj.com/android-async-http/

<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"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#88ff98ff"
        android:gravity="center"
        android:text="使用Async框架"
        android:textSize="20sp" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="get_click"
        android:text="GET发送HTTP请求" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="post_click"
        android:text="POST发送HTTP请求" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="upload_click"
        android:text="上传文件" />

</LinearLayout>

activity:

package com.example.asynchttp;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import java.net.URLEncoder;

import org.apache.http.Header;
import org.apache.http.HttpResponse;

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.RequestParams;
import com.loopj.android.http.ResponseHandlerInterface;
import com.loopj.android.http.TextHttpResponseHandler;

import android.os.Bundle;
import android.provider.MediaStore.Files;
import android.app.Activity;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity
{

	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu)
	{
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	public void get_click(View v) throws Exception
	{
		String path = "http://192.168.1.100:8080/ServletTest/Login" + "?username=" + URLEncoder.encode("test", "utf-8") + "&password=" + URLEncoder.encode("123", "utf-8");
		AsyncHttpClient client = new AsyncHttpClient();
		client.get(path, new AsyncHttpResponseHandler()
		{

			@Override
			public void onSuccess(int statusCode, Header[] headers, byte[] responseBody)
			{
				Toast.makeText(MainActivity.this, new String(responseBody), Toast.LENGTH_SHORT).show();
			}

			@Override
			public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error)
			{
				Toast.makeText(MainActivity.this, new String(responseBody + error.getMessage()), Toast.LENGTH_SHORT).show();
			}
		});
	}

	public void post_click(View v) throws Exception
	{
		String path = "http://192.168.1.100:8080/ServletTest/Login";
		String username = "test";
		String password = "123";
		AsyncHttpClient client = new AsyncHttpClient();
		RequestParams params = new RequestParams();
		params.add("username", username);
		params.add("password", password);
		client.post(path, params, new TextHttpResponseHandler()
		{
			@Override
			public void onSuccess(int statusCode, Header[] headers, String responseString)
			{
				Toast.makeText(MainActivity.this, responseString, Toast.LENGTH_SHORT).show();
			}

			@Override
			public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable)
			{
				Toast.makeText(MainActivity.this, responseString, Toast.LENGTH_SHORT).show();
			}
		});
	}

	public void upload_click(View v) throws Exception
	{
		String path = "http://192.168.1.100:8080/ServletTest/Upload";
		AsyncHttpClient client = new AsyncHttpClient();
		RequestParams params = new RequestParams();
		InputStream is = getAssets().open("test.png");
		params.put("file", is,"测试.png");
		client.post(path, params, new AsyncHttpResponseHandler()
		{

			@Override
			public void onSuccess(int statusCode, Header[] headers, byte[] responseBody)
			{
				Toast.makeText(MainActivity.this, "上传成功", Toast.LENGTH_SHORT).show();
			}

			@Override
			public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error)
			{
				Toast.makeText(MainActivity.this, "上传失败", Toast.LENGTH_SHORT).show();
			}
		});
	}
}


 

© 著作权归作者所有

维特的烦恼
粉丝 20
博文 97
码字总数 42329
作品 0
天津
私信 提问
加载中

评论(2)

S-HeLL
S-HeLL
你好,想请教下 这段
String path = "http://192.168.1.100:8080/ServletTest/Login" + "?username=" + URLEncoder.encode("test", "utf-8") + "&password=" + URLEncoder.encode("123", "utf-8");

直接把参数写在path里面的话,为什么我的会报
11-07 13:18:42.136: W/System.err(909): java.net.MalformedURLException: No valid URI scheme was provided
(已经换成我自己的地址了。。)
但将get(path, new AsyncHttpResponseHandler())
换成get(path, params,new AsyncHttpResponseHandler())
用  params.put("username", userName);
    params.put("password", password);
就会提示成功。。。。是什么原因呢?
维特的烦恼
维特的烦恼
消灭零回复
android-async-http源码剖析

本文主要内容 android-async-http用法 android-async-http主要流程 总结 1、android-async-http用法 android-async-http框架用于网络请求等,据说它已经不再维护,但个人感觉它还是很好用的,...

某昆
2018/08/25
0
0
android中网络操作使用总结(http)

Android是作为智能手机的操作系统,我们开发的应用,大多数也都需要连接网络,通过网络发送数据、获取数据,因此作为一个应用开发者必须熟悉怎么进行网络访问与连接。通常android中进行网络连...

码农明明
2014/05/22
0
6
[Android官方开发者博客.翻译]Android的HTTP客户端

Android的HTTP客户端 原文地址: http://android-developers.blogspot.com/2011/09/androids-http-clients.html [本文由来自Dalvik团队的Jesse Wilson提交。--Tim Bray] 大多数需要网络连接的......

李海珍
2012/11/25
0
0
Android安全模型之Android安全机制(进程通信)

进程通信是应用程序进程之间通过操作系统交换数据与服务对象的机制。Linux操作系统的传统进程间通信(IPC)有多种方式,比如管道,命令管道,信号量,共享内存,消息队列,以及网络与Unix套接...

柳哥
2014/12/02
0
0
Android 开发程序员必备网站

开发必备网站: Android 开发各种工具下载 Android 开发国内大牛集合 Android 开发技术博客周刊 Android 开发技术周报中文版 Android 优秀开源项目集合以及源码分析 Android 万能的技术交流社...

白jian
2016/11/25
576
1

没有更多内容

加载失败,请刷新页面

加载更多

Java8

package com.shi.lambda;import java.util.Arrays;import java.util.List;import org.junit.Test;import com.shi.model.Employee;/** * 初始化案例 * @author xiaosh......

小小小施爷
25分钟前
1
0
c# 动态编译代码

有时候做计算一些东西时候,算法一直变更,写在程序需要一直调整,因此算法写在cs文件,然后动态调用内部的方法去计算判断,只需变更cs文件即可。 static void Main() { Stopwatch watch = n...

朝如青丝暮成雪
25分钟前
3
0
好程序员技术分享html5和JavaScript的区别

好程序员技术分享html5和JavaScript的区别,HTML5广义上讲是前端开发学科的代名词,包含HTML5、CSS3及JavaScript三个重要的部分,是运行在浏览器上应用的统称。如PC端网站、管理系统、手机网...

好程序员IT
27分钟前
2
0
tomcat 与 spring boot 设置虚拟路径

tomcat 设置虚拟路径 <Context path="/uploadDir" docBase="/data"/>path是请求访问的路径docBase是服务器存储文件的路径,Linux 根目录下 data spring boot 虚拟路径设置 registry.addRe......

kdy1994
31分钟前
1
0
var ,let ,const 的区别和共同点

一、let和var区别 1.关于变量提升,var能变量提升,let不能 // 关于var 如下所示console.log(a); //输出undefined,此时就是变量提升var a = 2; console.log(a); //2 //相当于下面...

MrBoyce
36分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部