网络编程之get,post请求,文件上传及下载

 * 1.发送GET请求
AsyncHttpClient.get(), 使用RequestParams传递数据
  * 2.发送POST请求
AsyncHttpClient.post(), 使用RequestParams传递数据
3.访问Webservice
Webservice就是别人写好的, 已经发布在网络上的公开的API, 应用程序中可以直接调用
4.上传
在RequestParams中添加一个File类型的字段, AsyncHttpClient就会执行上传操作
5.下载
请求下载路径, 使用FileAsyncHttpResponseHandler来处理下载文件
post请求代码:
package com.itheima.request;

import java.io.File;

import org.apache.http.Header;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

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

public class MainActivity extends Activity {

	private EditText usernameET;
	private EditText passwordET;
	private EditText pathET;
	private AsyncHttpClient client;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		usernameET = (EditText) findViewById(R.id.usernameET);
		passwordET = (EditText) findViewById(R.id.passwordET);
		pathET = (EditText) findViewById(R.id.pathET);
		client = new AsyncHttpClient();
	}
	
	public void login(View v) throws Exception {
		String username = usernameET.getText().toString().trim();	
		String password = passwordET.getText().toString().trim();
		String path = pathET.getText().toString().trim();
		//带参数的请求;
		RequestParams params = new RequestParams();
		params.put("username", username);		// URLEncoder.encode()
		params.put("password", password);
		params.put("upload", new File(path));	// File类型会作为上传文件字段
		
		//post请求,如果为get请求,则调用get方法;
		client.post("http://192.168.1.251:8080/WebServer/LoginServlet", params , new AsyncHttpResponseHandler() {
			public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
				Toast.makeText(getApplicationContext(), "登录成功", Toast.LENGTH_SHORT).show();
			}
			public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
				Toast.makeText(getApplicationContext(), "登录失败 " + statusCode, Toast.LENGTH_SHORT).show();
				error.printStackTrace();
			}
		});
	}

}

文件下载代码:
<pre name="code" class="java">package com.itheima.download;

import java.io.File;

import org.apache.http.Header;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.FileAsyncHttpResponseHandler;

public class MainActivity extends Activity {

	private EditText pathET;
	private AsyncHttpClient client;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		pathET = (EditText) findViewById(R.id.pathET);
		client = new AsyncHttpClient();
	}

	public void download(View v) {
		String path = pathET.getText().toString().trim();
		//文件下载的保存地址;
		File file = new File("/mnt/sdcard/", path.substring(path.lastIndexOf("/") + 1));
		
		client.get(path, new FileAsyncHttpResponseHandler(file) {		// 处理文件传输的处理器
			public void onSuccess(int statusCode, Header[] headers, File file) {
				Toast.makeText(getApplicationContext(), "下载成功", Toast.LENGTH_SHORT).show();
			}
			public void onFailure(int statusCode, Header[] headers, Throwable throwable, File file) {
				Toast.makeText(getApplicationContext(), "下载失败 " + statusCode, Toast.LENGTH_SHORT).show();
				throwable.printStackTrace();
			}
			public void onProgress(int bytesWritten, int totalSize) {	// 下载或上传的进度
				System.out.println(bytesWritten + " / " + totalSize + " (" + bytesWritten * 100 / totalSize + "%)");
			}
		});
	}

}


 





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值