如何使用HttpUrlConnection在android中构建REST客户端

时间:2016-03-09 08:33:10

标签: java android rest android-studio androidhttpclient

我想构建一个消耗一些REST API的Android应用程序。

我使用HttpURLConnection进行基本身份验证和GET / PUT一些数据,但我觉得我做错了。 我有两个类ConnectionPUTConnectionGET,我为每个请求调用,因为每个HttpURLConnection实例用于发出单个请求。

使用HttpURLConnection在Android上构建REST客户端的正确方法是什么?

2 个答案:

答案 0 :(得分:3)

这是在Android中使用HttpUrlConnection调用Http GET的示例代码。

  URL url;
    HttpURLConnection urlConnection = null;
    try {
        url = new URL("your-url-here");

        urlConnection = (HttpURLConnection) url
                .openConnection();

        InputStream in = urlConnection.getInputStream();

        InputStreamReader isw = new InputStreamReader(in);

        int data = isw.read();
        while (data != -1) {
            char current = (char) data;
            data = isw.read();
            System.out.print(current);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (urlConnection != null) {
            urlConnection.disconnect();


}    
    }

但我强烈建议您不要重新发明用于为Android应用程序创建REST客户端的轮子,而是尝试使用Retrofit和Volley这些适应性强且可靠的库来进行网络化。

它们非常可靠并经过测试,并删除了您为网络通信编写的所有样板代码。

有关更多信息,我建议您学习以下有关Retrofit和Volley的文章

Android - Using Volley for Networking

Android -Using Retrofit for Networking

答案 1 :(得分:0)

使用HttpURLConnection的REST客户端

try {

        URL url = new URL("YOUR_URL");
        HttpURLConnection conn = (HttpURLConnection)url.openConnection();

        BufferedReader reader = new BufferedReader(
                new InputStreamReader(conn.getInputStream()));

        StringBuffer data= new StringBuffer(1024);
        String tmpdata="";
        while((tmpdata=reader.readLine())!=null) {              

               data.append(tmpdata).append("\n");

           }
        reader.close();

     }catch(Exception e){  
             e.printStackTrace();

        } finally {

         if (conn!= null) {
             conn.disconnect();

            } 

        }