`
357029540
  • 浏览: 737207 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

JAVA封装HTTP协议

阅读更多
[size=medium]
摘自http://www.cnblogs.com/devinzhang/archive/2012/01/17/2325092.html

1.概念     

      HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能:HttpURLConnection。但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。

      除此之外,在Android中,androidSDK中集成了Apache的HttpClient模块,用来提供高效的、最新的、功能丰富的支持 HTTP 协议工具包,并且它支持 HTTP 协议最新的版本和建议。使用HttpClient可以快速开发出功能强大的Http程序。

2.区别

HttpClient是个很不错的开源框架,封装了访问http的请求头,参数,内容体,响应等等,

HttpURLConnection是java的标准类,什么都没封装,用起来太原始,不方便,比如重访问的自定义,以及一些高级功能等。
3.案例

URLConnection
String urlAddress = "http://192.168.1.102:8080/AndroidServer/login.do";  
    URL url;  
    HttpURLConnection uRLConnection;  
    public UrlConnectionToServer(){  
  
    }  
    //向服务器发送get请求
    public String doGet(String username,String password){  
        String getUrl = urlAddress + "?username="+username+"&password="+password;  
        try {  
            url = new URL(getUrl);  
            uRLConnection = (HttpURLConnection)url.openConnection();  
            InputStream is = uRLConnection.getInputStream();  
            BufferedReader br = new BufferedReader(new InputStreamReader(is));  
            String response = "";  
            String readLine = null;  
            while((readLine =br.readLine()) != null){  
                //response = br.readLine();  
                response = response + readLine;  
            }  
            is.close();  
            br.close();  
            uRLConnection.disconnect();  
            return response;  
        } catch (MalformedURLException e) {  
            e.printStackTrace();  
            return null;  
        } catch (IOException e) {  
            e.printStackTrace();  
            return null;  
        }  
    }  
      
    //向服务器发送post请求
    public String doPost(String username,String password){  
        try {  
            url = new URL(urlAddress);  
            uRLConnection = (HttpURLConnection)url.openConnection();  
            uRLConnection.setDoInput(true);  
            uRLConnection.setDoOutput(true);  
            uRLConnection.setRequestMethod("POST");  
            uRLConnection.setUseCaches(false);  
            uRLConnection.setInstanceFollowRedirects(false);  
            uRLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");  
            uRLConnection.connect();  
              
            DataOutputStream out = new DataOutputStream(uRLConnection.getOutputStream());  
            String content = "username="+username+"&password="+password;  
            out.writeBytes(content);  
            out.flush();  
            out.close();  
              
            InputStream is = uRLConnection.getInputStream();  
            BufferedReader br = new BufferedReader(new InputStreamReader(is));  
            String response = "";  
            String readLine = null;  
            while((readLine =br.readLine()) != null){  
                //response = br.readLine();  
                response = response + readLine;  
            }  
            is.close();  
            br.close();  
            uRLConnection.disconnect();  
            return response;  
        } catch (MalformedURLException e) {  
            e.printStackTrace();  
            return null;  
        } catch (IOException e) {  
            e.printStackTrace();  
            return null;  
        }  
    }

HTTPClient
String urlAddress = "http://192.168.1.102:8080/qualityserver/login.do";  
public HttpClientServer(){  
          
 }  
      
public String doGet(String username,String password){  
    String getUrl = urlAddress + "?username="+username+"&password="+password;  
    HttpGet httpGet = new HttpGet(getUrl);  
    HttpParams hp = httpGet.getParams();  
    hp.getParameter("true");  
    //hp.  
    //httpGet.setp  
    HttpClient hc = new DefaultHttpClient();  
    try {  
        HttpResponse ht = hc.execute(httpGet);  
        if(ht.getStatusLine().getStatusCode() == HttpStatus.SC_OK){  
            HttpEntity he = ht.getEntity();  
            InputStream is = he.getContent();  
            BufferedReader br = new BufferedReader(new InputStreamReader(is));  
            String response = "";  
            String readLine = null;  
            while((readLine =br.readLine()) != null){  
                //response = br.readLine();  
                response = response + readLine;  
            }  
            is.close();  
            br.close();  
              
            //String str = EntityUtils.toString(he);  
            System.out.println("========="+response);  
            return response;  
        }else{  
            return "error";  
        }  
    } catch (ClientProtocolException e) {  
        // TODO Auto-generated catch block  
        e.printStackTrace();  
        return "exception";  
    } catch (IOException e) {  
        // TODO Auto-generated catch block  
        e.printStackTrace();  
        return "exception";  
    }      
}  
  
public String doPost(String username,String password){  
    //String getUrl = urlAddress + "?username="+username+"&password="+password;  
    HttpPost httpPost = new HttpPost(urlAddress);  
    List params = new ArrayList();  
    NameValuePair pair1 = new BasicNameValuePair("username", username);  
    NameValuePair pair2 = new BasicNameValuePair("password", password);  
    params.add(pair1);  
    params.add(pair2);  
      
    HttpEntity he;  
    try {  
        he = new UrlEncodedFormEntity(params, "gbk");  
        httpPost.setEntity(he);  
          
    } catch (UnsupportedEncodingException e1) {  
        // TODO Auto-generated catch block  
        e1.printStackTrace();  
    }   
      
    HttpClient hc = new DefaultHttpClient();  
    try {  
        HttpResponse ht = hc.execute(httpPost);  
        //连接成功  
        if(ht.getStatusLine().getStatusCode() == HttpStatus.SC_OK){  
            HttpEntity het = ht.getEntity();  
            InputStream is = het.getContent();  
            BufferedReader br = new BufferedReader(new InputStreamReader(is));  
            String response = "";  
            String readLine = null;  
            while((readLine =br.readLine()) != null){  
                //response = br.readLine();  
                response = response + readLine;  
            }  
            is.close();  
            br.close();  
              
            //String str = EntityUtils.toString(he);  
            System.out.println("=========&&"+response);  
            return response;  
        }else{  
            return "error";  
        }  
    } catch (ClientProtocolException e) {  
        // TODO Auto-generated catch block  
        e.printStackTrace();  
        return "exception";  
    } catch (IOException e) {  
        // TODO Auto-generated catch block  
        e.printStackTrace();  
        return "exception";  
    }     
}

servlet端json转化:
resp.setContentType("text/json");  
        resp.setCharacterEncoding("UTF-8");  
        toDo = new ToDo();  
        List<UserBean> list = new ArrayList<UserBean>();  
        list = toDo.queryUsers(mySession);  
        String body;  

        //设定JSON  
        JSONArray array = new JSONArray();  
        for(UserBean bean : list)  
        {  
            JSONObject obj = new JSONObject();  
            try  
            {  
                 obj.put("username", bean.getUserName());  
                 obj.put("password", bean.getPassWord());  
             }catch(Exception e){}  
             array.add(obj);  
        }  
        pw.write(array.toString());  
        System.out.println(array.toString());

android端接收:
String urlAddress = "http://192.168.1.102:8080/qualityserver/result.do";  
        String body =   
            getContent(urlAddress);  
        JSONArray array = new JSONArray(body);            
        for(int i=0;i<array.length();i++)  
        {  
            obj = array.getJSONObject(i);  
            sb.append("用户名:").append(obj.getString("username")).append("\t");  
            sb.append("密码:").append(obj.getString("password")).append("\n");  
              
            HashMap<String, Object> map = new HashMap<String, Object>();  
            try {  
                userName = obj.getString("username");  
                passWord = obj.getString("password");  
            } catch (JSONException e) {  
                e.printStackTrace();  
            }  
            map.put("username", userName);  
            map.put("password", passWord);  
            listItem.add(map);  
              
        }  
          
        } catch (Exception e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
          
        if(sb!=null)  
        {  
            showResult.setText("用户名和密码信息:");  
            showResult.setTextSize(20);  
        } else  
            extracted();  
   
       //设置adapter   
        SimpleAdapter simple = new SimpleAdapter(this,listItem,  
                android.R.layout.simple_list_item_2,  
                new String[]{"username","password"},  
                new int[]{android.R.id.text1,android.R.id.text2});  
        listResult.setAdapter(simple);  
          
        listResult.setOnItemClickListener(new OnItemClickListener() {  
            @Override  
            public void onItemClick(AdapterView<?> parent, View view,  
                    int position, long id) {  
                int positionId = (int) (id+1);  
                Toast.makeText(MainActivity.this, "ID:"+positionId, Toast.LENGTH_LONG).show();  
              
            }  
        });  
    }  
    private void extracted() {  
        showResult.setText("没有有效的数据!");  
    }  
    //和服务器连接  
    private String getContent(String url)throws Exception{  
        StringBuilder sb = new StringBuilder();  
        HttpClient client =new DefaultHttpClient();  
        HttpParams httpParams =client.getParams();  
          
        HttpConnectionParams.setConnectionTimeout(httpParams, 3000);  
        HttpConnectionParams.setSoTimeout(httpParams, 5000);  
        HttpResponse response = client.execute(new HttpGet(url));  
        HttpEntity entity =response.getEntity();  
          
        if(entity !=null){  
            BufferedReader reader = new BufferedReader(new InputStreamReader  
                    (entity.getContent(),"UTF-8"),8192);  
            String line =null;  
            while ((line= reader.readLine())!=null){  
                sb.append(line +"\n");  
            }  
            reader.close();  
        }  
        return sb.toString();  
    }

[/size]
分享到:
评论

相关推荐

    java 通用http工具封装 java 通用http工具封装java 通用http工具封装java 通用http工具封装

    java 通用http工具封装 java 通用http工具封装java 通用http工具封装java 通用http工具封装java 通用http工具封装 java 通用http工具封装java 通用http工具封装java 通用http工具封装java 通用http工具封装 java ...

    java 通用http工具封装 java 通用http工具封装

    java 通用http工具封装 java 通用http工具封装java 通用http工具封装 java 通用http工具封装java 通用http工具封装 java 通用http工具封装java 通用http工具封装 java 通用http工具封装java 通用http工具封装 java ...

    基于Java封装短信协议CMPP/SGIP/SMGP/SMPP的http接口短信发送设计源码

    该项目为Java语言编写的短信发送解决方案,采用CMPP、SGIP、SMGP、SMPP等多种短信协议进行封装,通过提供简单的HTTP接口,实现短信的快速发送。项目包含512个Java源文件,2个XML配置文件,以及1个Git忽略文件、1个...

    Java 解析国标hj212协议

    7. **网络通信**:为了接收和发送hj212协议的数据,开发者可能使用Java的Socket编程或者HTTP客户端库,如HttpURLConnection、Apache HttpClient等,来实现网络连接和数据交换。 8. **异常处理**:在网络通信和数据...

    java代码实现coap 协议请求 服务器端+客户端

    在本文中,我们将深入探讨如何使用Java来实现CoAP(Constrained Application Protocol)协议,这是一种专为物联网(IoT)设备设计的轻量级通信协议。CoAP与HTTP类似,但更加适合资源有限的设备。我们将关注服务器端...

    java实现cmpp协议开发代码

    Java实现CMPP协议开发代码主要涉及的是中国移动通信的CMPP(China Mobile Packet ...通过以上分析,Java实现CMPP协议的开发涉及到网络通信、协议解析、HTTP服务、数据处理等多个技术领域,是一个综合性的系统开发项目。

    Http.rar_HTTP java_HTTP协议_http解析

    它封装了HTTP协议的细节,使得开发者可以更专注于业务逻辑。 3. **使用OkHttp**:这是一个现代的、高效的HTTP客户端库,由Square公司开发,支持异步请求,有自动重试、连接管理等特性,并且性能优秀。 HTTP协议的...

    java_http_post.zip_java http post_java http协议post_java post

    Java HTTP POST方法是Java编程中用于向Web服务器发送数据的一种常见技术,主要涉及网络编程和HTTP协议。在本文中,我们将深入探讨Java中如何实现HTTP POST请求,理解HTTP POST的工作原理,以及它与GET方法的区别。 ...

    javaeye api [java httpclient版] 简单封装

    HttpClient 是一个成熟的 Java 库,用于执行 HTTP 协议的客户端请求,而 JavaEyeClient 则是对这个库进行了一层封装,简化了开发人员在处理网络请求时的操作。 HttpClient 库允许开发者发送 GET、POST、PUT、DELETE...

    java http 发送xml报文(java发送xml报文实例+参数)

    在Java编程中,HTTP协议是网络通信的一种标准,常用于客户端与服务器之间的数据交互。XML(eXtensible Markup Language)则是一种结构化数据格式,广泛应用于数据交换、配置文件等场景。本篇文章将深入探讨如何在...

    基于ijkplayer的Java封装视频播放器设计源码

    该项目是对ijkplayer进行Java封装的视频播放器设计源码,包含254个文件,其中Java源文件79个,XML配置文件59个,PNG图片文件59个,SO库文件15个,Gradle文件9个,Git忽略文件7个,属性文件7个,pro文件6个,ser文件2...

    L1接口协议的Java实现.pdf

    L1接口协议的Java实现涉及到多个知识点,首先是L1接口协议的定义及其在通信行业中的应用背景,其次是Java语言如何被应用于L1接口协议的消息封装和解析,以及HTTP和XML在网络通信中的作用,最后是如何通过端口管理来...

    java封装接口智能交通DEMO

    3. **网络通信**:智能交通系统中的数据交换通常基于网络,因此DEMO中可能使用了HTTP、TCP/IP或其他网络协议进行数据传输。可能涉及到的类有Socket、HttpClient等,以及处理JSON或XML数据的库,如Jackson或Gson。 4...

    java-http方式封装极光IM聊天,体积小,易扩展

    由于所有的交互都是基于HTTP协议,开发者可以灵活地调整请求策略,比如添加缓存机制、错误重试、异步处理等。此外,如果极光IM的服务端API发生变化,只需要更新客户端的请求逻辑即可,无需担心SDK升级带来的兼容性...

    java返回值封装.zip

    REST(Representational State Transfer,表述性状态转移)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,通过URL定位资源,使用HTTP方法(GET、POST、PUT、DELETE等)操作资源。RESTful接口返回值设计...

    Https请求工具类,Java实现http请求,https请求

    Https请求工具类,Java实现http请求,https请求 本篇文章将详细介绍如何使用Java语言实现Http和Https请求的工具类,包括如何建立Https连接、如何实现Post请求、如何处理SSL验证等内容。 在Java中,使用...

    Java采用Netty实现基于DTU的TCP服务器 + 多端口 + 多协议

    它提供了丰富的API,使得开发者能更方便地构建TCP、UDP、HTTP、FTP等协议的服务器和客户端。在本项目中,我们将利用Netty来构建TCP服务器,处理DTU发送过来的数据。 1. **Netty基础架构**: Netty的核心组件包括...

    java工具包封装对xml的操作javamail,翻译,io操作

    本Java工具包聚焦于四个核心功能:JavaMail的封装、Google在线翻译的集成、文件I/O操作的封装以及DOM4J对XML的处理。以下将详细阐述这些知识点。 1. **JavaMail**:JavaMail是Java平台上的一个开源库,用于处理电子...

    java-http方式封装极光推送,体积小,可扩展性强,代码简洁

    Java HTTP方式封装极光推送是一种轻量级的实现方式,它摒弃了传统的SDK集成,而是通过HTTP协议直接与极光推送服务器进行交互。这种方式有以下几个显著的优点: 1. **体积小**:不使用极光推送的SDK,避免引入额外的...

    java源码转换FLV

    这些库通常封装了底层的C或C++库,比如FFmpeg,以提供Java接口,从而在Java应用程序中实现视频编码、解码、转换等功能。 在“java视频转换FLV源码”这个项目中,我们可以假设它使用了其中的一种或多种库来实现视频...

Global site tag (gtag.js) - Google Analytics