`

Android HTTP 服务

阅读更多
使用 HTTP 服务:

1.
Apache HttpClinet
Http GET
Http POST


a.创建 HttpClient
b.初始 HTTP GET 方法或 POST 方法.
c.设置参数 键值对
d.执行 HTTP 调用
e.处理 HTTP 回复

HTTP GET 示例:
public class TestHttpGetMethod{
    public void get(){
        BufferedReader in = null;

        try{
            HttpClient client = new DefaultHttpClient();
            HttpGet request = new HttpGet();
            request.setURI("http://w26.iteye.com");
            HttpResponse response = client.execute(request);
            
            in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));   
            StringBuffer sb = new StringBuffer(""); 
            String line = "";
            String NL = System.getProperty("line.separator");
            while((line = in.readLine()) != null){
                sb.append(line + NL);
            }
            in.close();
            String page = sb.toString();

            Log.i(TAG, page);



        }catch(Exception e){
            Log.e(TAG,e.toString())
        }finally{
            if(in != null){
                try{
                    in.close();
                }catch(IOException ioe){
                    Log.e(TAG, ioe.toString());
                }
            }

        }
    }
}




带参数的 HTTP GET:
HttpGet request = new HttpGet("http://www.baidu.com/s?wd=amos_tl");
client.execute(request);


HTTP POST 示例:
public class TestHttpPostMethod{
    public void post(){
        BufferedReader in = null;

        try{
            HttpClient client = new DefaultHttpClient();
            HttpPost request = new HttpPost("http://localhost/upload.jsp");

            List<NameValuePair> postParams = new ArrayList<NameValuePair>();
            postParams.add(new BasicNameValuePair("filename", "sex.mov"));
            
            UrlEncodeFormEntity formEntity = new UrlEncodeFormEntity(postParams);
            request.setEntity(formEntity);
            
            HttpResponse response = client.execute(request);

            in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));   
            StringBuffer sb = new StringBuffer(""); 
            String line = "";
            String NL = System.getProperty("line.separator");
            while((line = in.readLine()) != null){
                sb.append(line + NL);
            }
            in.close();
            String result = sb.toString();
            Log.i(TAG, result );

        }catch(Exception e){
            Log.e(TAG,e.toString())
        }finally{
            if(in != null){
                try{
                    in.close();
                }catch(IOException ioe){
                    Log.e(TAG, ioe.toString());
                }
            }

        }
    }
}






multipart POST 支持:

需要以下支持:
Commons IO
http://commons.apache.org/io/

Mime4j
http://james.apache.org/mime4j/

HttpMime
http://hc.apache.org/httpcomponents-client/httpmime/index.html

下载全部JAR网址:
http://www.sayedhashimi.com/downloads/android/multipart-android.zip



multipart POST 示例:

public class TestHttpMultipartPost{
    public void mulPost(){
    try{
        InputStram in = this.getAssets().open("data.xml");  
        HttpClient client = new HttpDefaultHttpClient();
        HttpPost request = new HttpPost("http://localhost/upload.jsp");
        byte[] data = IOUtils.toByteArray(in);
        InputStreamBody isb = new InputStreamBody(new ByteArrayIntputStream(data), "uploadedFile"); 
        StringBody sb1 = new StringBody("some text");      
        StringBoyd sb2 = new StringBody("some text too");

        MultipartEntity me = new MultipartEntity();
        me.addPart("uploadedFile", isb);
        me.addPart("one" ,sb1);
        me.addPart("two" ,sb2);
 
        request.setEntity(me);
        HttpRespones response = client.excute(request);
        res.getEntity().getContent().close();
        
    } catch(Throwable e){
        Log.e(TAG, e.toString());
    }

    }

}


异常处理
    重试处理

多线程问题
    使用 ClientConnectionManager ,创建一个线程安全的 HttpClient.
public class ApplicationEx extends Application{
    public static final String TAG = "amos_tl";
    private HttpClient client = null;

    @override
    public void onCreate(){
        super.onCreate();
        client = createHttpClient();
    }

    @override 
    public void onLowMemory(){
        super.onLowMemory();
        shutdownHttpClient();
    }

    @override
    public void onTerminate(){
        super.onTerminate();
        shutdownHttpClient();
    }

    private void shutdownHttpClient(){
        if(client != null && client.getConnectionManager() != null){
            client.getConnectionManager().shutdown();
            client = null;
        }
    }
    
    private HttpClient createHttpClient(){
        Log.d(TAG, "create httpclient ...");
        HttpParams params = new BasicHttpParams();
        HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
        HttpProtocolParams.setContentCharset(params, HTTP.DEFAULT_CONTENT_CHARSET);
        HttpProtocolParams.setUseExpectContinue(params, true);
        SchemaRegistry sr = new SchemaRegistry();
        sr.register(new Schema("http", PlainSocketFactory.getSocketFactory(), 80));
        sr.register(new Schema("https", SLLSocketFactory.getSocketFactory(), 443));
        ClientConnectionManager cm = new ThreadSafeClientConnManager(params, sr);

        return new DefaultHttpClient(cm, params);
    }    

    public HttpClient getHttpClient(){
        return client;
    }
    
     
}

HttpActivity.java
public class HttpActivity extends Activity{
    @override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        Log.d(TAG, "httpactivity startup...");
        getHttpContent();
    }
    
    private void getHttpContent(){
        try{
            ApplicationEx app = (ApplicationEx)this.getApplication();
            HttpClient client = app.getHttpClient();
            HttpGet request = new HttpGet();
            request.setURI("http://w26.iteye.com");
            HttpResponse response = client.excute(resquest);

            String page = EntityUtils.toString(response.getEntity());
            Log.i(TAG, page);
        }catch(Exception e){
             Log.e(TAG, e.toString());
        } 
    }


   }


配置 AndroidManifest.xml
<application android:icon="@drawable/icon"
             android:label="@string/app_name"
             android:name="ApplictionEx"
>












分享到:
评论
1 楼 超级潜水艇 2010-02-27  
android 用httpclient能实现https连接吗?

相关推荐

    android http服务器

    9. **服务生命周期管理**:在Android应用中,服务器的生命周期需要与应用的生命周期同步。例如,在应用启动时启动服务器,在应用退出时关闭服务器。 通过以上步骤,开发者可以在Android设备上搭建并运行一个基本的...

    android http server 服务

    在Android平台上实现一个HTTP服务器,可以让我们在移动设备上提供数据服务,比如分享信息或进行设备间的通信。这里我们将深入探讨如何在Android设备上搭建HTTP服务器,并通过热点分享功能,让其他连接到该热点的设备...

    android端实现http服务(源码)

    最近需要在我们的安卓设备上实现通过网页访问设备,进行相关配置、上传数据等操作,因此就需要在安卓端实现一个http服务器。(其实代码也可以用于PC端,只不过PC端已经有太多成熟的框架了,JDK7/8之后貌似就内置了一...

    Android_Http_服务器

    在Android平台上,构建一个Http服务器是一项实用的技术,可以用于测试、数据传输或者本地服务的实现。这个主题,"Android_Http_服务器",涉及到的是如何利用Android原生API来搭建一个Http服务器,而不是依赖于任何第...

    aws.zip_HTTPServer_android_android httpserver_aws android_文件传输

    标题中的“aws.zip_HTTPServer_android_android httpserver_aws android_文件传输”暗示了这是一个关于在Android平台上使用AWS服务实现HTTP服务器功能,以便进行文件传输的项目。在这个项目中,开发者可能利用AWS ...

    android http server

    在Android中,HTTP服务器可以用于本地流媒体服务,允许设备上的其他应用或设备通过HTTP协议获取和播放媒体文件。 在压缩包子文件的文件名称列表中,“HttpGetProxy_player”可能是一个类或模块的名称,它可能实现了...

    ANDROID HTTPSERVER

    在Android平台上,构建一个HTTP服务器可以为用户提供便捷的数据共享服务,尤其对于图片、音乐和视频等多媒体资源。这个过程涉及到Android系统的网络编程和文件管理,是Android开发中的一个实用技能。接下来,我们将...

    Android启动http运行vue程序.rar

    在Android平台上运行基于Vue.js开发的应用程序是一种将前端技术与移动平台结合的创新方式。...不过,这也需要开发者具备Android开发和前端技术的双重知识,以及对如何在Android环境中运行Web服务的理解。

    Android如何从服务器获取图片

    Android从服务器获取图片 ...本文介绍了Android如何从服务器获取图片的步骤和关键代码,通过使用HttpGet、HttpClient、HttpEntity和BitmapFactory对象,可以轻松地从服务器获取图片并将其显示在手机上。

    Android服务器

    Android服务器通常指的是运行在Android设备上的服务组件,用于执行后台任务,提供网络服务,与其他设备或应用程序交互。以下是对Android服务器类以及常见方法的详细解释。 首先,我们了解下Android服务(Service)...

    android访问tomcat服务器

    综上所述,"android访问tomcat服务器"这个案例涵盖了Android客户端的网络请求、服务器端的Servlet编程、数据库操作、数据展示等多个环节,是Android与Web服务交互的经典实践。开发者需要理解并掌握这些技术点,才能...

    android studio使用NanoHTTPD 创建 http 服务器打开html并使用webView打开页面

    在Android项目中,我们可以利用`NanoHTTPD`快速搭建一个本地服务器,用于提供静态资源服务,例如HTML、CSS、JavaScript文件等。 接下来,我们详细介绍一下创建过程: 1. **集成NanoHTTPD** - 在`build.gradle`...

    android HTTP接口测试软件

    在Android开发过程中,HTTP接口测试是一项重要的任务,用于验证服务器端API的功能以及客户端与服务器之间的数据交换。"android HTTP接口测试软件"是一个专为Android平台设计的小型应用程序,旨在简化这个过程。它...

    android 如何使用tomcat搭建服务器

    - `Android 中tomcat搭建本地服務器 - Tomcat小站.mht`:这可能是另一个关于在Android设备上搭建Tomcat服务器的指南。 - `android开发中tomcat服务器怎么设置?的终极解决教程 - 大灰狼教程网.mht`:这个教程可能是...

    android客户端与后台服务器交互

    在本场景中,Spring可能被用来管理Struts和Hibernate的依赖,以及处理服务层逻辑。 5. **JSON**:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在...

    android studio连接云服务器mysql实现登录注册

    在云服务器上,你需要部署一个支持HTTP/HTTPS的Web服务,比如使用Node.js、PHP或Java的Spring Boot等。这里我们假设使用Java后端,用Spring Boot搭建RESTful API。你需要创建一个MySQL数据库,存储用户信息,如...

    Android本地服务器框架node-android.zip

    兼容 Node.js API 的 Android 本地服务器框架。支持 libUV, TCP, UDT, ...set/clear Timeout/IntervalEventEmitterStreamHttpParserHTTPHTTPP(run http over udp)TCPUDT(udp transport)DNSURLfor API usage, check ...

    Android客户端访问web服务器

    1. **HTTP/HTTPS 协议**:Android客户端与Web服务器之间的通信大多基于HTTP或HTTPS协议。HTTP是超文本传输协议,用于传输数据,而HTTPS是在HTTP基础上加入了SSL/TLS安全层,提供了加密处理、服务器身份验证和消息...

    Android上部署HTTP服务源码

    很多时候需要用到在android系统上部署HTTP,如转码解码、共享本地手机文件等等,这时候可以通过在手机上部署http服务,其他设备访问该服务网址即可。 部署的手机需要开启连接wifi,局域网内其他设备可访问到该网址...

    android通过http上传文件到服务器

    本教程将详细介绍如何通过HTTP协议在Android客户端实现文件上传,并在服务器端使用Servlet进行处理。 首先,我们需要理解HTTP协议。HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,用于从万维网...

Global site tag (gtag.js) - Google Analytics