`
nba
  • 浏览: 2505 次
文章分类
社区版块
存档分类
最新评论

HttpURLConnection网络访问,wap代理,文件下载

阅读更多
android 官方文档推荐2.3以后使用HttpURLConnection,以下是一个实例

http://developer.android.com/reference/java/net/HttpURLConnection.html


import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URL;
import java.util.ArrayList;
 
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLSession;
 
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.message.BasicNameValuePair;
 
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
 
/**
 * 网络连接工具类
 * 
 */
public class NetworkManager {
        static final String TAG = "NetworkManager";
 
        private int connectTimeout = 30 * 1000;
        private int readTimeout = 30 * 1000;
        Proxy mProxy = null;
        Context mContext;
 
        public NetworkManager(Context context) {
                this.mContext = context;
                setDefaultHostnameVerifier();
        }
 
        /**
         * 检查代理,是否cnwap接入
         */
        private void detectProxy() {
                ConnectivityManager cm = (ConnectivityManager) mContext
                                .getSystemService(Context.CONNECTIVITY_SERVICE);
                NetworkInfo ni = cm.getActiveNetworkInfo();
                if (ni != null && ni.isAvailable()
                                && ni.getType() == ConnectivityManager.TYPE_MOBILE) {
                        String proxyHost = android.net.Proxy.getDefaultHost();
                        int port = android.net.Proxy.getDefaultPort();
                        if (proxyHost != null) {
                                final InetSocketAddress sa = new InetSocketAddress(proxyHost,
                                                port);
                                mProxy = new Proxy(Proxy.Type.HTTP, sa);
                        }
                }
        }
 
        private void setDefaultHostnameVerifier() {
                //
                HostnameVerifier hv = new HostnameVerifier() {
                        public boolean verify(String hostname, SSLSession session) {
                                return true;
                        }
                };
 
                HttpsURLConnection.setDefaultHostnameVerifier(hv);
        }
 
        /**
         * 发送和接收数据
         * 
         * @param strReqData
         *            请求数据
         * @param strUrl
         *            请求地址
         * @return
         */
        public String SendAndWaitResponse(String strReqData, String strUrl) {
                //
                detectProxy();
 
                String strResponse = null;
                ArrayList<BasicNameValuePair> pairs = new ArrayList<BasicNameValuePair>();
                pairs.add(new BasicNameValuePair("requestData", strReqData));
 
                HttpURLConnection httpConnect = null;
                UrlEncodedFormEntity p_entity;
                try {
                        p_entity = new UrlEncodedFormEntity(pairs, "utf-8");
                        URL url = new URL(strUrl);
 
                        if (mProxy != null) {
                                httpConnect = (HttpURLConnection) url.openConnection(mProxy);
                        } else {
                                httpConnect = (HttpURLConnection) url.openConnection();
                        }
                        httpConnect.setConnectTimeout(connectTimeout);
                        httpConnect.setReadTimeout(readTimeout);
                        httpConnect.setDoOutput(true);
                        httpConnect.addRequestProperty("Content-type",
                                        "application/x-www-form-urlencoded;charset=utf-8");
 
                        httpConnect.connect();
 
                        OutputStream os = httpConnect.getOutputStream();
                        p_entity.writeTo(os);
                        os.flush();
 
                        InputStream content = httpConnect.getInputStream();
                        strResponse = BaseHelper.convertStreamToString(content);
                        BaseHelper.log(TAG, "response " + strResponse);
                } catch (IOException e) {
                        e.printStackTrace();
                } finally {
                        httpConnect.disconnect();
                }
 
                return strResponse;
        }
 
        /**
         * 下载文件
         * 
         * @param context
         *            上下文环境
         * @param strurl
         *            下载地址
         * @param path
         *            下载路径
         * @return
         */
        public boolean urlDownloadToFile(Context context, String strurl, String path) {
                boolean bRet = false;
 
                //
                detectProxy();
 
                try {
                        URL url = new URL(strurl);
                        HttpURLConnection conn = null;
                        if (mProxy != null) {
                                conn = (HttpURLConnection) url.openConnection(mProxy);
                        } else {
                                conn = (HttpURLConnection) url.openConnection();
                        }
                        conn.setConnectTimeout(connectTimeout);
                        conn.setReadTimeout(readTimeout);
                        conn.setDoInput(true);
 
                        conn.connect();
                        InputStream is = conn.getInputStream();
 
                        File file = new File(path);
                        file.createNewFile();
                        FileOutputStream fos = new FileOutputStream(file);
 
                        byte[] temp = new byte[1024];
                        int i = 0;
                        while ((i = is.read(temp)) > 0) {
                                fos.write(temp, 0, i);
                        }
 
                        fos.close();
                        is.close();
 
                        bRet = true;
 
                } catch (IOException e) {
                        e.printStackTrace();
                }
 
                return bRet;
        }
}


转自eoe社区
分享到:
评论

相关推荐

    HttpURLConnection文件下载\httpURLConnection文件下载

    在Java中,如果需要从网络上下载文件,`HttpURLConnection`是一个常见的选择,它提供了与HTTP服务器进行通信的能力,包括发送请求、接收响应以及读取返回的数据。在给定的代码片段中,展示了如何使用`...

    JAVA通过HttpURLConnection 上传和下载文件的方法

    JAVA通过HttpURLConnection上传和下载文件的方法 JAVA通过HttpURLConnection上传和下载文件的方法是非常有实用价值的,需要的朋友可以参考下。HttpURLConnection是一个Java类,用于从网络中读取数据或向网络中写入...

    Java自带的HttpURLConnection访问接口实现文件上传

    在本文中,我们将深入探讨如何使用HttpURLConnection实现文件上传,同时也会涉及普通参数的传递。 首先,我们需要理解HTTP请求的基本结构。HTTP请求通常由以下几个部分组成:请求行、请求头、空行和请求体。在文件...

    本示例使用HttpUrlConnection实现上传文件

    在Android开发中,有时我们需要将本地的文件...通过理解以上步骤和注意事项,开发者可以有效地利用HttpURLConnection在Android应用中实现代理文件上传功能。同时,了解服务器端如何接收和处理这些文件也是至关重要的。

    使用HttpUrlConnection实现上传文件 服务器端代码

    在Java编程环境中,当需要与Web服务器交互,例如上传文件时,`HttpURLConnection`是一个常见的选择,因为它提供了灵活且高效的方式。本篇文章将详细讲解如何使用`HttpURLConnection`实现文件上传,同时涉及到服务器...

    即时访问网络图片文件展示---HttpURLConnection

    标题中的“即时访问网络图片文件展示---HttpURLConnection”是指通过Java的HttpURLConnection类来实现从网络上获取并显示图片的功能。HttpURLConnection是Java标准库提供的一种HTTP协议的网络连接工具,它允许应用...

    安卓基于HttpURLConnection的网络访问.java

    基于HttpURLConnection的网络访问 已封装好,一句话访问网络 可采用GET和POST两种方式访问

    HttpUrlConnection下载文件

    ### HttpUrlConnection下载文件:Java实现详解 在Java编程中,`HttpUrlConnection`是用于发送HTTP请求和接收响应的标准工具之一。它提供了一个简单而强大的API来与Web服务器进行交互,包括GET、POST等HTTP方法。...

    Android基于HttpUrlConnection类的文件下载实例代码

    HttpUrlConnection类是Android系统中的一种基本的网络请求方式,通过该类可以实现文件下载、上传等功能。 在本文中,我们将通过实例代码,介绍Android基于HttpUrlConnection类的文件下载功能。该实例代码可以帮助...

    JavaProx多项目多工程代理HttpUrlConnection

    在Java编程环境中,多项目多工程的代理设置是一项常见的需求,尤其在进行网络请求时,如使用HttpUrlConnection。这个场景通常涉及到多个独立的开发项目或模块,它们可能需要通过同一代理服务器访问互联网资源,或者...

    Android使用HttpURLConnection访问网络

    在Android应用开发中,与服务器进行数据交互是常见的需求,HttpURLConnection是Android系统提供的一个标准API,用于实现HTTP协议通信。...在实际项目中,还可以考虑使用第三方库,如OkHttp,来简化网络访问逻辑。

    Android httpUrlConnection Post方式访问网络简单demo

    在这个"Android httpUrlConnection Post方式访问网络简单demo"中,我们将探讨如何使用`HttpURLConnection`进行POST请求以及与PHP服务器端进行数据交互。 首先,`testPost.php`是服务器端的PHP脚本,它接收客户端...

    HttpURLConnection servlet 多文件参数 断点上传

    本知识点将深入探讨如何使用`HttpURLConnection`与Servlet协同工作,处理多文件参数以及实现断点上传功能。 首先,`HttpURLConnection`是Java API中的一个核心类,它负责提供HTTP协议的连接功能。相比Apache ...

    Netroid框架和HttpURLConnection类的文件下载demo

    它是低级别的网络访问接口,相比第三方库如OkHttp,使用起来可能更复杂,但灵活性更高。使用HttpURLConnection进行文件下载的关键步骤包括: 1. **建立连接**:通过URL对象创建HttpURLConnection实例,设置请求方法...

    java访问https网址下载文件(含证书)

    调用`connect()`方法建立实际的网络连接,然后通过`getInputStream()`获取服务器的响应流,准备下载文件。同时,创建一个本地文件的`FileOutputStream`用于写入接收到的数据。 5. **下载文件**: 使用`...

    Android移动开发-使用HttpURLConnection实现多线程的下载

    实例Demo程序来示范使用HttpURLConnection实现多线程下载。 使用多线程下载文件可以更快完成文件的下载,因为客户端启动多条线程进行下载就意味着服务器也需要为该客户端提供响应的服务。假设服务器同时最多服务100...

    Android-使用HttpURLConnection实现断点续传

    在Android开发中,网络编程是不可或缺的一部分,尤其是在处理大文件下载时,断点续传功能显得尤为重要。HttpURLConnection是Java标准库提供的一种网络连接接口,适用于Android系统,它提供了更高效、更灵活的网络...

    HttpURLConnection读取本地目录上传远程服务器

    1. **建立连接**:创建`URL`对象,表示本地文件或目录所在的URL,然后通过`openConnection()`方法获取`HttpURLConnection`实例。 2. **设置请求方法**:由于默认的请求方法是GET,我们需要调用`setRequestMethod(...

    使用HttpURLConnection下载图片

    在本例中,我们将探讨如何使用`HttpURLConnection`来下载图片,这是一个基础但实用的网络编程任务。下面我们将详细介绍这个过程,并涉及到的相关知识点。 1. **HttpURLConnection简介**: `HttpURLConnection`是`...

    HttpURLConnection访问网页下载图片示例代码

    `HttpURLConnection`是Java标准库提供的一种网络连接组件,适用于执行HTTP请求,包括下载文件。在这个示例中,我们将深入探讨如何使用`HttpURLConnection`来下载网页上的图片。 首先,我们需要了解`...

Global site tag (gtag.js) - Google Analytics