`

http请求 网络请求 从网路读数据

 
阅读更多

读取网络数据

URL httpUrl = new URL(jsonUrl);//创建url http地址

HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();//打开http 链接

InputStream in = conn.getInputStream();//得到输入流//这个一句从阻塞单线线程。

 

android里读取网路数据必须在子线程里

httpRead(url,callback){

   Handler handler=new Handler();//倒主线程使用

    new Thread(){

          public void run(){

                  URL httpUrl = new URL(jsonUrl);//创建url http地址

                  HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();//打开http 链接

                  InputStream in = conn.getInputStream();//得到输入流//这个一句从阻塞单线线程。

----------------------------------------------------------------------------------

                  网络返回成功时:

                  String str=从in从读数据;

                  //当前的子线程中执行callback的onSucces

                  callback.onSucces(str);

 

                 //用handler倒到主线程中执行onSucces

                  handler.post(new Runnable(){

                         callback.onSucces(str);

                  });

-----------------------------------------------------------------------------------------------------------

                  网络返回失败时:

                  //当前的子线程中执行callback的onError

                  callback.onError();

 

                  /用handler倒到主线程中执行onError

                   handler.post(new Runnable(){

                         callback.onSucces(str);/

                  });

          }

    }

}

 

第三方库已经封装上面的开辟线程和倒主线程的逻辑,只需传url与callback,注意callback已经别倒到住线程了。

例如:第三方网络库android-async-http:

asyncHttpClient=new AsyncHttpClient();//整个项目工程只需要一个。

asyncHttpClient.get(jsonUrl, new TextHttpResponseHandler() {

            @Override
            public void onSuccess(int statusCode, Header[] headers, String responseString) {

                      //主线程执行,responseString是网络返回的结果

            }

            @Override
            public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
                      //主线程执行网络出错
            }

}

 

例如:第三方网络库Volley:

RequestQueue requestQueue= Volley.newRequestQueue(context);

StringRequest request = new StringRequest(Request.Method.GET,

      url,

      new Response.Listener<String>() {

            public void onResponse(String s) {

                    //主线程执行,s是网络返回的结果

            }

        },

        new Response.ErrorListener() {

            @Override

            public void onErrorResponse(VolleyError volleyError) {

                    //主线程执行网络出错

            }

        });

requestQueue.add(request);

//request可以设置超时时间

request.setRetryPolicy(new DefaultRetryPolicy(

                60000, //timeout时间

                DefaultRetryPolicy.DEFAULT_MAX_RETRIES,//重连次数

                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

注意5.0以上需要在主模块build.gradle加

android {

    useLibrary 'org.apache.http.legacy'//必须在第一行

 

}

分享到:
评论

相关推荐

    进入网络请求,对返回的XML数据进入处理

    在IT行业中,网络请求是应用程序获取远程数据的基本方式,而XML数据作为一...ASIHttp提供了方便的网络请求接口,而XMLParserSDK则帮助我们解析XML数据,两者结合,能够高效地处理网络数据,为应用程序提供丰富的功能。

    易语言建立HTTP连接请求

    在易语言中,建立HTTP连接请求是网络编程中的常见操作,主要用于与远程服务器进行数据交换,例如下载文件、提交表单数据等。本篇将详细介绍如何在易语言中实现这个功能。 首先,我们要理解HTTP(超文本传输协议)是...

    Android Studio发起GET网络请求

    在Android开发中,获取网络数据是常见的需求,通常我们通过HTTP协议发起GET或POST请求来实现。本教程将详细介绍如何在Android Studio中使用Java编写代码发起GET网络请求,适合初学者学习。 首先,理解GET请求的基本...

    Android高级应用源码-自定义列表选择Dialog,适用网络请求数据.zip

    这个“Android高级应用源码-自定义列表选择Dialog,适用网络请求数据.zip”文件提供了一个实例,展示了如何创建一个可以加载网络数据并展示在列表中的自定义Dialog。下面将详细阐述相关知识点: 1. **自定义Dialog*...

    谷歌插件学习 监听网络请求

    通过学习和实践,你可以自定义插件来自动化收集特定网络请求数据,这对于数据分析和项目监控尤其有帮助。例如,你可以创建一个插件来追踪特定API的调用频率,或者监控网页性能指标。 总之,掌握网络请求监听技巧...

    Android解析xml文件获取网络数据http请求,带Fragment框架,图片缓存本地

    当图片初次加载时,会从网络下载并保存到本地;后续请求相同图片时,直接从缓存读取,提高了加载速度。 5. 实现步骤: - 创建XML解析器,根据网络响应构建数据模型。 - 使用HttpURLConnection或OkHttp发送HTTP...

    C#抓包,SnifferHttp使用网卡获取Http请求数据,可以用于监控网卡数据包

    这通常通过网络接口控制器(如网卡)来实现,它允许应用程序读取网络上的原始数据流。在Windows操作系统中,可以使用WinPcap或Npcap库来实现这个功能,而SnifferHttp则是一个专为HTTP协议设计的C#库,简化了在C#环境...

    Android-kotlin实现网络请求库

    5. **网络请求库的设计**: 自定义网络请求库通常会包含以下几个核心部分:请求接口(定义请求方法和URL)、网络请求实现(使用HttpURLConnection或OkHttp等)、数据解析(使用Fastjson或其他解析库)、线程管理...

    qt_network_master - 网络数据请求工具源码

    QT网络数据请求工具源码解析 QT是一个跨平台的C++开发框架,广泛应用于图形用户界面、网络通信、多媒体处理等多个领域。在本项目"qt_network_master"中,重点是利用QT的网络模块进行数据请求,这对于开发网络应用...

    Flutter通过FutureBuilder实现异步请求网络数据并显示加载中Demo

    Flutter通过FutureBuilder实现异步请求网络数据并显示加载中Demo,详情请看博客Flutter中的异步(Future、async、await、FutureBuilder)和 网络请求:https://yuzhiqiang.blog.csdn.net/article/details/89155870

    网络请求JSON数据,更新到ListView

    在这个案例中,开发者可能创建了一个继承自BaseAdapter的自定义Adapter,将从网络请求中解析出的JSON数据转化为列表项的视图。 4. **自定义ListView**:自定义ListView通常包括自定义Adapter和自定义列表项布局。...

    C++实现HTTP请求

    在IT行业中,网络通信是软件开发的一个重要领域,而HTTP(超文本传输协议)作为互联网上应用最广泛的一种网络协议,被广泛应用于网页浏览、数据传输等场景。本篇文章将详细探讨如何使用C++来实现HTTP的POST和GET请求...

    QT实现HTTP请求回应程序

    QT库是一种跨平台的C++应用程序开发框架,广泛用于创建...开发者可以利用这些功能创建各种网络应用,从简单的数据获取到复杂的文件上传下载。通过理解和实践QT的网络编程,你将能够更深入地掌握网络通信和C++编程技巧。

    boost之http请求及chunked解析

    在本话题中,我们将探讨如何利用Boost.ASIO库进行HTTP请求,并专注于处理“chunked”编码,这是一种在HTTP传输过程中分块发送数据的方式。 首先,Boost.ASIO是Boost库的一部分,专门用于异步I/O操作,如网络通信。...

    cocos2dx Http 网络请求 例子

    通过分析和学习这个示例,开发者可以快速掌握在Cocos2d-x环境中进行HTTP请求的方法,从而实现在游戏中的网络功能,如下载资源、同步用户数据等。 总之,Cocos2d-x提供的`network`模块为开发者提供了方便的接口来...

    iOS安全之【拦截请求,实现特定目的 】(修改HTTPHeaderField、不走全局proxy、设置代理IP和端口、对网络请求的数据进行报文级别的加密)

    2.3、对网络请求的数据进行报文级别的加密:使用NSURLProtocol来自动监听HTTP请求并加密解密。 通过[NSURLProtocol registerClass: [NetworkInject class]];注入了自定义的NSURLProtocol类 3、原理:利用...

    网络Http请求的完整封装

    在Android开发中,网络请求是应用与服务器交互的重要方式,HTTP协议是最常用的数据传输协议之一。本项目"网络Http请求的完整封装"旨在提供一个全面的解决方案,方便开发者快速、高效地处理各种HTTP请求,包括GET和...

    鸿蒙网络请求Demo.zip

    在鸿蒙操作系统中,网络请求是应用程序与远程服务器交互的基础,用于获取或发送数据。"鸿蒙网络请求Demo.zip" 文件包含了一个示例项目,它演示了如何在鸿蒙系统中进行网络通信。这个压缩包可能包括源代码、配置文件...

Global site tag (gtag.js) - Google Analytics