客户端从网上下载资源(初学)
2014-09-12 21:19
162 查看
1. VollyActivity.java
(1-6 是在手机客户端的程序代码)
import java.util.HashMap;
import java.util.Map;
import com.android.volley.Request.Method;
import com.android.volley.RequestQueue;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.ImageRequest;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.android.volley.toolbox.ImageLoader.ImageListener;
import com.wangnan.myhttp.tool.MyApplication;
import com.wangnan.myhttp.tool.PostStringRequest;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class VolleyActivity extends Activity implements OnClickListener{
ImageView image;
TextView txt;
private RequestQueue mRequestQueue;
private ImageLoader imageLoader;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.volley);
findViewById(R.id.volleyget).setOnClickListener(this);
findViewById(R.id.volleypost).setOnClickListener(this);
findViewById(R.id.volleydown).setOnClickListener(this);
findViewById(R.id.imageloader).setOnClickListener(this);
findViewById(R.id.myloader).setOnClickListener(this);
txt=(TextView)findViewById(R.id.volleytxt);
image=(ImageView)findViewById(R.id.volleyimg);
MyApplication myApp=(MyApplication)getApplication();
//1.创建请求队列
//使用google下的volley
//mRequestQueue=Volley.newRequestQueue(this);
//自己定义了一个Application
mRequestQueue=myApp.getRequestQueue();
//创建图片加载器
//imageLoader= new ImageLoader(mRequestQueue, new BitMapCache());
imageLoader=myApp.getImageLoader();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
//get是从网络上获取
case R.id.volleyget:
//2.定义一个请求Request
StringRequest request = new StringRequest(
"http://www.baidu.com",
//"http://192.16.137.1:8080/topnews/news.do?type=1", //在手机上面运行时(需要保持在同一网络中)
//"http://10.0.0.1/topnews/news.do?type=1", //在模拟器上运行时
new Listener<String>() {
@Override
public void onResponse(String arg0) {
txt.setText(arg0);
}
},
new ErrorListener() {
@Override
public void onErrorResponse(
VolleyError arg0) {
Toast.makeText(VolleyActivity.this, "网络中断", Toast.LENGTH_LONG).show();
}
});
//3.将请求添加到请求队列
mRequestQueue.add(request);
break;
case R.id.volleydown:
ImageRequest imageRequest = new ImageRequest("http://photocdn.sohu.com/20140910/Img404194951.jpg",
new Listener<Bitmap>() {
@Override
public void onResponse(Bitmap arg0) {
image.setImageBitmap(arg0);
}
},
0,
0,
Config.ARGB_8888,
new ErrorListener() {
@Override
public void onErrorResponse(
VolleyError arg0) {
}
});
mRequestQueue.add(imageRequest);
break;
//使用自定义的方法来加载图片, 一个是在加载时显示的图片,一个是加载失败显示的图片(节约了流量和内存)
case R.id.imageloader:
ImageListener listener = ImageLoader.getImageListener(image, R.drawable.ic_launcher, R.drawable.grossini_dance_01);
imageLoader.get("http://photocdn.sohu.com/20140910/Img404194951.jpg", listener);
break;
case R.id.myloader:
PostStringRequest requestPost2 = new PostStringRequest(
Method.POST,
"http://192.168.155.1:8080/TodayTopic/showServlet.do",
new Listener<String>() {
@Override
public void onResponse(String arg0) {
txt.setText(arg0);
}
},
new ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {
Toast.makeText(VolleyActivity.this, "网络中断", Toast.LENGTH_LONG).show();
}
});
mRequestQueue.add(requestPost2);
break;
default:
break;
}
}
@Override
protected void onStop() {
super.onStop();
mRequestQueue.cancelAll(this);
}
}
2. BitMapCach.java
(由地址转到图片)import android.graph
4000
ics.Bitmap;
import android.support.v4.util.LruCache;
import com.android.volley.toolbox.ImageLoader.ImageCache;
public class BitMapCache implements ImageCache{
private LruCache<String, Bitmap> mCache;
public BitMapCache() {
super();
int maxSize = 1024*1024*10;
mCache = new LruCache<String, Bitmap>(maxSize){
@Override
protected int sizeOf(String key, Bitmap value) {
return value.getRowBytes()*value.getHeight();
}
};
}
@Override
public Bitmap getBitmap(String url) {
return mCache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitMap) {
mCache.put(url, bitMap);
}
}
3. HttpUtitility.java
(设置时间上的限制,超过限定时间就转为提示)
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
public class HttpUtitility {
public static String doGet(String url){
HttpURLConnection conn=null;
InputStream is=null;
StringBuilder sb=new StringBuilder();
try {
URL httpUrl = new URL(url);
conn=(HttpURLConnection)httpUrl.openConnection();
conn.setConnectTimeout(5*1000);
conn.setReadTimeout(5*1000);
conn.connect();
if(conn.getResponseCode()==200){
is=conn.getInputStream();
byte[] buffer = new byte[1024*10];
int len=0;
while((len=is.read(buffer))!=-1){
sb.append(new String(buffer,0,len));
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if(is!=null)
is.close();
if(conn!=null)
conn.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
public static Bitmap downImage(String url){
HttpURLConnection conn=null;
InputStream is=null;
Bitmap bitmap=null;
try {
URL httpUrl = new URL(url);
conn=(HttpURLConnection)httpUrl.openConnection();
/*conn.setConnectTimeout(5*1000);
conn.setReadTimeout(5*1000);
conn.connect();*/
if(conn.getResponseCode()==200){
is=conn.getInputStream();
bitmap=BitmapFactory.decodeStream(is);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if(is!=null)
is.close();
if(conn!=null)
conn.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
return bitmap;
}
}
4. PostStringRequest.java
import java.util.Map;
import com.android.volley.AuthFailureError;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.toolbox.StringRequest;
public class PostStringRequest extends StringRequest{
private Map<String, String> map;
public PostStringRequest(int method, String url, Listener<String> listener,
ErrorListener errorListener) {
super(method, url, listener, errorListener);
}
public PostStringRequest(String url, Listener<String> listener,
ErrorListener errorListener) {
super(url, listener, errorListener);
}
public PostStringRequest(String url, Listener<String> listener,
ErrorListener errorListener,Map<String, String> map) {
super(Method.POST, url, listener, errorListener);
this.map=map;
}
public void setParams(Map<String, String> params) {
this.map = params;
}
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return map;
}
}
5. MyApplication
(一般可以使用Google开发的volly,此处是自己在其基础上修改定义的)
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.Volley;
import android.app.Application;
public class MyApplication extends Application {
private RequestQueue mRequestQueue;
private ImageLoader imageLoader ;
@Override
public void onCreate() {
super.onCreate();
mRequestQueue = Volley.newRequestQueue(getApplicationContext());
imageLoader = new ImageLoader(mRequestQueue, new BitMapCache());
}
public RequestQueue getRequestQueue() {
return mRequestQueue;
}
public ImageLoader getImageLoader() {
return imageLoader;
}
}
6. Volly.xml
(页面形式)
<RelativeLayout 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"
tools:context=".MainActivity" >
<Button
android:id="@+id/volleyget"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="get_volley"/>
<Button
android:id="@+id/volleypost"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/volleyget"
android:text="post_volley"/>
<Button
android:id="@+id/volleydown"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/volleypost"
android:text="下载图片"/>
<LinearLayout
android:id="@+id/myapp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/volleydown">
<Button
android:id="@+id/imageloader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="ImageLoader"/>
<Button
android:id="@+id/myloader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="myloader"/>
</LinearLayout>
<TextView
android:id="@+id/volleytxt"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_below="@id/myapp"
android:text="context"/>
<ImageView
android:id="@+id/volleyimg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/volleytxt"/>
</RelativeLayout>
7.在MyEclipse编写一个ShowServlet.java
(在网络上的数据,在xml文件中写出相应的跳转)
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TodayServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
out.print("服务器下载到客户端");
out.close();
}
}
相关文章推荐
- 网上到哪能找到免费下载的源代码资源呢?
- 如何将网上下载的apk修改资源后内置到手机
- 智能客户端(Smart Client )网上资源(转贴)
- 《JavaWeb---简单应用---服务器向客户端提供音乐资源(三)》--- 利用struts实现文件下载,下载时改变文件的名称
- oracle 9i,10G,11G,各版本下载资源(使用迅雷),网上搜的收藏备用!
- [移动网关]2G环境下资源下载有一定概率失败,客户端日志显示收到403错误
- 如何在网上下载自己需要的资源
- 实现下载指定URL的网上资源
- [移动网关]2G环境下资源下载有一定概率失败,客户端日志显示收到403错误
- 网上下载资源的相关文档
- [移动网关]2G环境下资源下载有一定概率失败,客户端日志显示收到403错误
- 在网上下载ftp资源,如蓝天官网的驱动的方法
- 利用Web/WCF Service上传下载文件[网上资源]
- 本人在网上找的cadence 16.6下载资源,存在本人的百度网盘中供大家下载!
- 如何在网上下载自己需要的资源
- 使用HTTP协议从网上获取资源下载到本地(1)
- Exchange 2000&2003文章和资源下载总汇(2005年元月版) (收藏)
- [源码下载]web上实现类似ftp客户端上传和下载
- 胃肠病网上资源
- 将指定的HTTP网络资源在本地以文件形式存放(下载)