【问题标题】:how to build REST client in android using HttpUrlConnection如何使用 HttpUrlConnection 在 android 中构建 REST 客户端
【发布时间】:2016-03-09 08:33:10
【问题描述】:

我想构建一个使用一些 REST API 的 Android 应用。

我正在使用HttpURLConnection 进行基本身份验证并获取/放置一些数据,但我觉得我做错了。 我有两个类 ConnectionPUTConnectionGET 来调用每个请求,因为每个 HttpURLConnection 实例都用于发出单个请求。

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

【问题讨论】:

  • 不会有单一的“正确方法”来解决这个问题。有很多方法可以实现这一点,无数库可以帮助你解决这个问题,更不用说涵盖该主题的无数 SO questions 和答案。
  • 您应该具体说明您遇到的问题并向我们展示确切的错误。
  • @toKrause 谢谢你,我想要那些“无数库”,这样我就可以测试它们了!
  • @FarhadFaghihi 我多次调用 api,我已经处理了一些 Web 项目,带有数据库的桌面应用程序:我们与数据库建立了 1 个连接!所以我觉得我错过了什么。这是我第一个关于 REST API 的项目 ^^"
  • 正如我已经提到的,已经有SO questions 涵盖了该主题;并且至少提到很多可用的库。

标签: java android rest android-studio androidhttpclient


【解决方案1】:

这是在 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 and Volley的文章

Android - Using Volley for Networking

Android -Using Retrofit for Networking

【讨论】:

  • 谢谢你的回答!!
【解决方案2】:

使用 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();

            } 

        }

【讨论】:

    猜你喜欢
    • 2015-04-23
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 2012-11-20
    相关资源
    最近更新 更多