asynchronous http client 的使用

官网建议使用静态的对象,static,但是这个如果有多个http请求,会涉及到函数重入的问题,这个明显是不可重入的,官网为什么还要推荐静态使用?

0

1个回答

没有具体看里里里面的源码,但官网既然推荐用static,应该是表示http client 是线程安全的。
static 会减少每次创建对象对性能的影响,可提高性能。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Android Asynchronous Http Client的用法实例
// 1.创建异步请求的客户端对象 AsyncHttpClient client = new AsyncHttpClient(); // 2.定义请求的地址 String url = "http://192.168.1.1:8080/GourmetOrderServer/loginServlet?name=jun&paw=123456"; // 3.创建请求参数的封装的对象 RequestParams params = new RequestParams(); // 4.设置请求的参数名和参数值 params.put("username", userName); // 5.设置请求的参数名和参数 params.put("userpass", userPass); //6.执行post方法 client.post(url, params, new AsyncHttpResponseHandler() { public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { if (statusCode == 200) { } } public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { } }); } 其他有什么问题或者想具体了解详细说明,可以参考官网 http://loopj.com/android-async-http/ 其他参考链接 http://blog.csdn.net/redarmy_chen/article/details/26980613
Android Asynchronous Http Client 中文教程
Android Asynchronous Http Client 官方指导的翻译
An Asynchronous Socket Server and Client
An Asynchronous Socket Server and Client
Android loopj 文件上传
代码是基于loopj (Asynchronous Http Client for Android) 的文件上传Demo,loopj 是基于 Apache's HttpClient 的异步http客户端。
BLE蓝牙在Android开发中的应用(一)
最近一段时间在写支持BLE蓝牙的Android应用。是时候总结一下了。nnn1、什么是BLE。(总得先知道BLE是什么吧~~~)n     Bluetooth Low Energy(低功耗蓝牙),缩写为Bluetooth LE,或BLE,作为蓝牙4.0 (有时称为蓝牙智能)规范的一部分,并针对上述的这些具体问题而被引入。就提高电池寿命而言,许多制造商声称一些传感器能维持数月甚至数年的时间(
注解实现SpringMVC异步处理中的问题
异常:Exception in thread “http-apr-8080-exec-6” java.lang.IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode (i.e. isAsyncStarted() returns false...
Asynchronous Client Socket和SocketAsyncEventArgs的使用问题
小弟正在学习MSDN的例子程序AsyncSocketServer,仿写了个客户端程序,但遇到两个疑惑,请大侠解惑,多谢先:rnrn【疑惑1】当和服务器端的连接建立以后(进入函数ProcessConnect),为什么在这里调用ReceiveAsync就会遭遇NullReferenceException,而调用SendAsync就没问题?rn【疑惑2】当调用了函数ReceiveAsync以后且没有数据被接收(处于等待接收状态),这是如果再执行SendAsync会遇到InvalidOperation异常。rnrn代码如下rn[code=C#]rn class Clientrn rn public bool Connet(string ip, string port)rn rn tryrn rn m_bAvailable = false;rn m_dataBuffer = new byte[512];rnrn IPAddress destinationAddr = null; // IP Address of server to connect torn int destinationPort = 0; // Port number of serverrn destinationAddr = IPAddress.Parse(ip);rn destinationPort = int.Parse(port);rnrn m_receiveEventArgs = new SocketAsyncEventArgs();rn m_sendEventArgs = new SocketAsyncEventArgs();rnrn // Create a socket and connect to the serverrn Socket sock = new Socket(destinationAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);rn m_receiveEventArgs.Completed += new EventHandler(SocketEventArg_Completed);rn m_receiveEventArgs.RemoteEndPoint = new IPEndPoint(destinationAddr, destinationPort);rn m_receiveEventArgs.UserToken = sock;rnrn m_sendEventArgs.Completed += new EventHandler(SocketEventArg_Completed);rn m_sendEventArgs.RemoteEndPoint = new IPEndPoint(destinationAddr, destinationPort);rn m_sendEventArgs.UserToken = sock;rnrn sock.ConnectAsync(m_receiveEventArgs);rnrn rn catch (Exception ex)rn rn Console.WriteLine(ex.ToString());rn return false;rn rnrn return true;rn rnrn public bool Receive()rn rn tryrn rn //Read data sent from the serverrnrn Socket sock = m_receiveEventArgs.UserToken as Socket;rn Console.WriteLine("calling ReceiveAsync");rn bool willRaiseEvent = sock.ReceiveAsync(m_receiveEventArgs);rn if (!willRaiseEvent)rn rn ProcessReceive(m_receiveEventArgs);rn rn rn catch (Exception ex)rn rn Console.WriteLine(ex.ToString());rnrn return false;rn rnrn return true;rn rnrn public bool IsConnectrn rn getrn rn return m_bAvailable;rn rn rn rnrn public bool SendToServer(byte[] buffer)rn rn // Send 'Hello World' to the serverrn //byte[] buffer = Encoding.UTF8.GetBytes("Hello World");rn //m_sendEventArgsrn Console.WriteLine("Send to server: 0", Encoding.UTF8.GetString(buffer));rnrn m_receiveEventArgs.SetBuffer(buffer, 0, buffer.Length);rn Socket sock = m_receiveEventArgs.UserToken as Socket;rnrn //【疑惑】当执行过ReceiveAsync以后且没有数据被接收(处于等待接收状态)rn // 如果执行SendAsync会遇到InvalidOperation异常rn bool willRaiseEvent = sock.SendAsync(m_receiveEventArgs);rn if (!willRaiseEvent)rn rn ProcessSend(m_receiveEventArgs);rn rnrn return true;rn rnrn //心跳检测rn public void Ping()rn rn // Send 'Hello World' to the serverrn byte[] buffer = Encoding.UTF8.GetBytes("Hello World");rnrn SendToServer(buffer);rn rnrn protected void ReceiveFromServer(byte[] buffer)rn rn rnrn /// rn /// A single callback is used for all socket operations. This method forwards execution on to the correct handler rn /// based on the type of completed operationrn /// rn private void SocketEventArg_Completed(object sender, SocketAsyncEventArgs e)rn rn switch (e.LastOperation)rn rn case SocketAsyncOperation.Connect:rn ProcessConnect(e);rn break;rn case SocketAsyncOperation.Receive:rn ProcessReceive(e);rn break;rn case SocketAsyncOperation.Send:rn ProcessSend(e);rn break;rn default:rn throw new Exception("Invalid operation completed");rn rn rnrn /// rn /// Called when a ConnectAsync operation completesrn /// rn private void ProcessConnect(SocketAsyncEventArgs e)rn rn if (e.SocketError == SocketError.Success)rn rn //m_bAvailable = true;rnrn Console.WriteLine("Successfully connected to the server");rnrn // 【疑惑】为什么在这里ReceiveAsync就会遭遇NullReferenceException,而SendAsync就没问题?rn //Receive();// first Receivernrn Ping();rnrn rn elsern rn throw new SocketException((int)e.SocketError);rn rn rnrn /// rn /// Called when a ReceiveAsync operation completesrn /// rn private void ProcessReceive(SocketAsyncEventArgs e)rn rn if (e.SocketError == SocketError.Success)rn rn Console.WriteLine("Received from server: 0", Encoding.UTF8.GetString(e.Buffer, 0, e.BytesTransferred));rnrn //粘包等处理逻辑rn // TODO:rnrn Receive();// for the next coming datarn rn elsern rn throw new SocketException((int)e.SocketError);rn rn rnrnrn /// rn /// Called when a SendAsync operation completesrn /// rn private void ProcessSend(SocketAsyncEventArgs e)rn rn if (e.SocketError == SocketError.Success)rn rn if (!m_bAvailable)rn rn Receive();//第一次发送数据成功后可以开始准备接受数据。rn rnrn m_bAvailable = true;rn rn elsern rn m_bAvailable = false;rnrn // Disconnect from the serverrn Socket sock = e.UserToken as Socket;rn sock.Shutdown(SocketShutdown.Send);rn sock.Close();rn //clientDone.Set();rn rn rn rn private SocketAsyncEventArgs m_receiveEventArgs;rn private SocketAsyncEventArgs m_sendEventArgs;rn private bool m_bAvailable;rn private byte[] m_dataBuffer;rn rn[/code]
Android Asynchronous Http Client的用法实例(详解+源码)
安卓客户端与后台进行通信有两种办法,即HTTP通信和socket通信,我们这里采用的是HTTP通信的通信方式,基于TCP/IP协议簇。n先来比较一下几种HTTP通信方式n一, nnHttpUrlConnectionn// http地址nString httpUrl = "http://192.168.1.1:8080/GourmetOrderServer/loginServlet?na
使用IDEA自带工具Rest Client进行http测试
1、插件 RestClient2、乱码问题后台接收为乱码将右侧 Request Body 修改为 Text 即可后台接收数据正常
用最简单的方式实现基于libevent框架的http client客户端
#include n#include n#include n#include n#include nnvoid http_request_done(struct evhttp_request *req, void *arg)n{n event_base_loopbreak((struct event_base*)arg);n printf("send request ok...\n")
go net/http Client使用——长连接客户端的使用
go net/http Client使用总结nnClient数据结构nn// A Client is an HTTP client. Its zero value (DefaultClient) is an// usable client that uses DefaultTransport.n//n// The Client's Transport typically has internal ...
redis集群主从中断,报io过高
问题原因:rn1、由于这个集群redis操作非常频繁,1分钟操作数据达到1-2G,所有自动aof非常频繁,主从复制打包rdb也非常频繁,之前配置已经无法满足要求rn报异常如下rn6943:M 19 Jul 20:22:57.326 # Connection with slave 10.215.84.40:6009 lost.rn32944:C 19 Jul 20:23:14.920 * DB sa
HTTP Client C++实现
CHttpClient.rar HTTP Client C++实现
http client 快速开始
官方文档地址:http://hc.apache.org/httpcomponents-client-ga/quickstart.htmlnn编辑工具:intelij ideannhttpclient是自动化工程的第一步,两个步骤带你快速开始httpclientnn1. 准备http请求nn2. httpclient访问http请求nn nn准备http请求nn1.为了快速开始,选择基于本地准备ht...
实现http协议两端httpserver和httpclient
用VC实现http协议,构造httpserver和httpclient两端应用实例。
EJB基础二 异步调用
EJB的异步相当简单。其实就是在方法上加个@Asynchronous注解就够了。n异步方法有两种返回类型,一是void,一是Future,我个人建议还是返回void。因为返回Future还需要等待结果,就是同步了,所以没有了异步意义。就比如下面的代码,就是一个典型的带异步调用的无状态EJB。因为返回的是void,所以可以不处理返回值。npackage asyncejb;n nimport ja
golang最简单的http client(GET方法),包括json.Unmarshal,fmt格式化输出
工程中用的测试用例代码npackage mainnnimport (n "fmt"n "io/ioutil"n "net/http"n)nnfunc main() {nn fmt.Println("hello world")nn client := &http.Client{}n url := "http://ip:port/upload/rtp/udp/count"nn request,...
kettle rest 接口 请求实例
kettle rest 接口 请求实例,rest client 登陆,获取解释token,保存token,批量、单个请求接口,json交互
HttpClient中的client和server相互调用的两个例子
HttpClient中的client和server相互调用的两个例子n1.例子一:新加web工程,导入jar包n1.1server:npackage com.zl.http.test1;nnimport java.io.IOException;nimport java.io.PrintWriter;nnimport javax.servlet.ServletException;nimport
netty的http client连接池设计
使用netty作为http的客户端,pool又该如何进行选型。本文将会进行详细的描述。
HTTP Client related Jars
HTTP client jars, 项目中经常使用
Golang 使用http Client下载文件
之前使用beego的http库的时候,有的情况需要下载文件。beego是能实现,但就是有点问题:不支持回调,没法显示下载速度,这在日常开发中是不可忍受的。 n看了下beego的实现主要是使用了io.copy函数,于是就深入的看了下实现原理,发现挺简单的,于是就根据io.copy原理实现的一个简单的下载器nnnnnn//定义要下载的文件nvar durl = "https://dl.google.c...
STM32开发笔记44:RTC驱动程序的移植
单片机型号:STM32F070F6P6nn本文介绍,将RTC驱动程序移植到自己的工程项目中的方法。本项目仅使用了RTC的实时时钟功能,没有启动定时报警等功能。nn nn1、在STM32CubeMX中对RTC进行配置,如下图所示,激活了时钟源和日历功能。nnnn2、配置RTC的时钟,如下图所示,STM32F070F6P6不能接外部的32.768K的晶振,所以只能使用HSE或LSI RC供给,考虑LS...
Idea使用httpclient调用接口
前言n博主githubn博主个人博客http://blog.healerjean.comn使用过swagger、觉得这个已经很方便了,再使用postman,觉得随便麻烦一些,但总算数据可以保存了。但是使用过idea的httclient之后,真的不想再使用他们了。n1、打开方式nn1.1、关于下面这种方式呢,不建议使用,因为用了下面的,其实就和postman没区别了nn2、正确的使用方式nn2.1、...
HttpClient的简单使用
1、HttpClient的简介rn     HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。rnrn2、HttpClient普通的Get请求rnimport java.io.File;nimport org.apache.commons.io.
servlet启用gzip过滤器后AsyncContext异步不成功的的问题
n看台湾林信良的《JSP&Servlet学习笔记第二版》5.4节异步处理时遇到的问题rn异步处理的servlet若存在过滤器,则过滤器的注解@WebFilter应设置asyncSupported=true,rn否则会报错A filter or servlet of the current chain does not support asynchronous operations.rn但是...
DHC - REST/HTTP API Client
DHC是一款可以帮助用户使用chrome插件模拟HTTP客户端发送测试数据到服务器的谷歌浏览器插件,在chrome中安装了DHC插件以后,就可在服务器端代码初步完成的时候,使用DHC进行数据测试,以便更早地了解到程序的BUG和需求。DHC插件的使用方式也非常简单,只需要输入服务器端的地址,以及发送的方式和数据内容,就可以向服务器端发送指定的数据,并获取服务器端的返回值。
Semantics of Asynchronous JavaScript
The Node.js runtime has become a major platform for de- velopers building cloud, mobile, or IoT applications using JavaScript. Since the JavaScript language is single threaded, Node.js programs must make use of asynchronous callbacks and event loops managed by the runtime to ensure appli- cations remain responsive. While conceptually simple, this programming model contains numerous subtleties and be- haviors that are de ned implicitly by the current Node.js implementation. This paper presents the rst comprehensive formalization of the Node.js asynchronous execution model and de nes a high-level notion of async-contexts to formalize fundamental relationships between asynchronous events in an application. These formalizations provide a foundation for the construction of static or dynamic program analysis tools, support the exploration of alternative Node.js event loop implementations, and provide a high-level conceptual framework for reasoning about relationships between the execution of asynchronous callbacks in a Node.js application.
http client
NULL 博文链接:https://xiaoyezi1128.iteye.com/blog/750773
Http Client
NULL 博文链接:https://fyan.iteye.com/blog/981596
高清彩版 Pro Asynchronous Programming with .NET
Pro Asynchronous Programming with .NET Pro Asynchronous Programming with .NET
【python】3.6版本使用http.client网络请求示例
这里示例为调用图灵机器人:nnn#!/user/bin/pythonn#-*- coding:utf-8 -*-nnimport urllib.parsenimport http.clientnimport jsonnnntest_data = {'key': 'xxx', 'info': 'xxx', 'userid': 'xxx'}ntest_data_url_encode = urll
go HTTP Client大量长连接保持(自定义client设置及源码简单分析)
一,问题起因n       线上server to server的服务,出现大量的TIME_WAIT。用netstat发现,不断的有连接在建立,没有保持住连接。抓TCP包确认request和response中的keepalive都已经设置,但是每个TCP连接处理6次左右的http请求后,就被关闭。n       就处理该问题的过程中,查看了一下http client的部分源码。n二,HTTP
Intellij idea 控制台及RestClient中文乱码解决办法
修改启动配置文件打开IntelliJ IDEA 安装路径,小编的安装路径为:D:\ProgramFiles\JetBrains\IntelliJ IDEA 2017.1\bin 找到idea64.exe.vmoptions 文件,用记事本打开,在最后一行填加:“-Dfile.encoding=UTF-8”。如果是x86机器请修改idea.exe.vmoptions。-Xms128mn-Xmx750m
轻量级C++实现的httpserver和httpclient
轻量级C++实现的httpserver和httpclient,给予mongoose,代码量很小,可以方便嵌入到自己的项目中,为C++项目添加http的功能,抛弃libcurl这种重型库
计算机领域中的同步(Synchronous)和异步(Asynchronous)
计算机领域中的同步和异步的概念和我们平时生活中的同步和异步是不一样的,这就让很多人难以理解。nn同步就是整个处理过程顺序执行,当各个过程都执行完毕,并返回结果。是一种线性执行的方式,执行的流程不能跨越。一般用于流程性比较强的程序,比如用户登录,需要对用户验证完成后才能登录系统。nn异步则是只是发送了调用的指令,调用者无需等待被调用的方法完全执行完毕;而是继续执行下面的流程。是一种并行处理的方式,不...
yii2框架-httpclient客户端
在中国互联网中,BAT作为中国互联网的三座大山,很多创业者或者初创公司都表示BAT掌握着中国互联网的80%资源,面对着这种生态级的巨头的触角延伸,他们成功的机会能有多大呢!确实无可否认,BAT玩的现在都是生态,是触及到各个方面的,他们不断地投资或者并购初创企业,或者一些独角兽,说到底他们即是在相互竞争,也是在防守。他们的这个生态体量级,是他们十几年来的技术,文化,商业模式,以及政策,社会发展到一定
Redis-Python交互:编码、连接、基本命令
Redis编码连接池连接方式操作key操作服务器操作n在redis-py 3.0之后就不在支持使用传统的‘Redis’客户端类了。StrictRedis现在只是Redis的一个别名,现在这个连接更加python化。例如,使用redis的字符串操作setbit和getbit来统计用户活跃天数:n'''n用Redis统计用户上线次数n理解:nA用户 100010001000001 //活跃了4天nB...
F1异步schema更新
naaaaa
jersey2.x集成http连接池过程总结
背景: n 最近在用jersey作为代理请求公司后台的restful API取得后端的一些,jersey默认是每来一个请求就新发起一个http连接到后台中n一、为什么使用连接池n提高网络传输效率:如果一次请求获取的信息量较少,那么在整个请求周期中,网络上的信息传递将会非常低效.因为建立连接时在网络上传递的数据(用于同步等)远大于我们想要的目标数据 n降低延迟:如果不采用连接池,每次连接发起Ht
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java的http学习 http学习 java