asynchronous http client 的使用

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

0

1个回答

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

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Android Asynchronous Http Client 中文教程
Android Asynchronous Http Client 官方指导的翻译
学习tornado:异步
why asynchronous tornado是一个异步web framework,说是异步,是因为tornado server与client的网络交互是异步的,底层基于io event loop。但是如果client请求server处理的handler里面有一个阻塞的耗时操作,那么整体的server性能就会下降。 def MainHandler(tornado.web.RequestH
redis集群主从中断,报io过高
问题原因: 1、由于这个集群redis操作非常频繁,1分钟操作数据达到1-2G,所有自动aof非常频繁,主从复制打包rdb也非常频繁,之前配置已经无法满足要求 报异常如下 6943:M 19 Jul 20:22:57.326 # Connection with slave 10.215.84.40:6009 lost. 32944:C 19 Jul 20:23:14.920 * DB sa
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
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客户端。
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]
HttpAsyncClient之模拟post请求示例
如果看到过我前些天写过的《轻松把玩HttpClient之模拟post请求示例》这篇文章,你再看本文就是小菜一碟了,如果你顺便懂一些NIO,基本上是毫无压力了。因为HttpAsyncClient相对于HttpClient,就多了一个NIO,这也是为什么支持异步的原因。 不过我有一个疑问,虽说NIO是同步非阻塞IO,但是HttpAsyncClient提供了回调的机制,这点儿跟nett
Android Asynchronous Http Client的用法实例(详解+源码)
安卓客户端与后台进行通信有两种办法,即HTTP通信和socket通信,我们这里采用的是HTTP通信的通信方式,基于TCP/IP协议簇。 先来比较一下几种HTTP通信方式 一,  HttpUrlConnection // http地址 String httpUrl = "http://192.168.1.1:8080/GourmetOrderServer/loginServlet?na
HttpClient中的client和server相互调用的两个例子
HttpClient中的client和server相互调用的两个例子 1.例子一:新加web工程,导入jar包 1.1server: package com.zl.http.test1; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import
EJB基础二 异步调用
EJB的异步相当简单。其实就是在方法上加个@Asynchronous注解就够了。 异步方法有两种返回类型,一是void,一是Future,我个人建议还是返回void。因为返回Future还需要等待结果,就是同步了,所以没有了异步意义。就比如下面的代码,就是一个典型的带异步调用的无状态EJB。因为返回的是void,所以可以不处理返回值。 package asyncejb; import ja
用最简单的方式实现基于libevent框架的http client客户端
#include #include #include #include #include void http_request_done(struct evhttp_request *req, void *arg) { event_base_loopbreak((struct event_base*)arg); printf("send request ok...\n")
13.1 异步工作流
13.1 异步工作流   有许多地方需要用到异步操作,比如,使用磁盘、调用 web 服务,或者连接到数据库,异步工作流可能显著提高性能。当应用程序执行异步操作时,很难预测操作什么时候完成。如果不能正确处理异步操作,应用程序就会效率低下,甚至可能停止响应。 要使代码能够执行异步操作,不会阻止调用线程,避免出现问题是必要的,但是,使用当前的技术很难实现。在 F# 中,这极大地简化了,是因为有了异
使用IDEA自带工具Rest Client进行http测试
1、插件 RestClient2、乱码问题后台接收为乱码将右侧 Request Body 修改为 Text 即可后台接收数据正常
注解实现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...
STM32开发笔记44:RTC驱动程序的移植
单片机型号:STM32F070F6P6 本文介绍,将RTC驱动程序移植到自己的工程项目中的方法。本项目仅使用了RTC的实时时钟功能,没有启动定时报警等功能。   1、在STM32CubeMX中对RTC进行配置,如下图所示,激活了时钟源和日历功能。 2、配置RTC的时钟,如下图所示,STM32F070F6P6不能接外部的32.768K的晶振,所以只能使用HSE或LSI RC供给,考虑LS...
Simulation and Synthesis Techniques for Asynchronous FIFO Design
讲述异步FIFO设计的景点例子,包含verilog源码,仿真,框图等,IC数字设计的基础之一
Android网络编程之使用HttpClient批量上传文件(二)AsyncTask+HttpClient并实现上传进度监听
我曾在《Android网络编程之使用HttpClient批量上传文件》一文中介绍过如何通过HttpClient实现多文件上传和服务器的接收。在上一篇主要使用Handler+HttpClient的方式实现文件上传。这一篇将介绍使用AsyncTask+HttpClient实现文件上传并监听上传进度。
AJAX工作原理及其优缺点 1.什么是AJAX? AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页
参考文章:https://www.cnblogs.com/SanMaoSpace/archive/2013/06/15/3137180.html AJAX工作原理及其优缺点 1.什么是AJAX? AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术。它使用: 使用XH
nodejs学习笔记(四)——构造httpserver和httpclient
nodejs虽然是用javascript这种前台脚本语言来写,但它实质上更接近后台语言,本章就来说明一下如何使用nodejs像后台语言那样来构造一个httpserver和httpclient。 要注意一点:只有在nodejs中我们可以用javacsript来构造httpserver和httpclient,而这也是依赖nodejs的原生http模块来完成的,在一般web应用中的javasc
实现http协议两端httpserver和httpclient
用VC实现http协议,构造httpserver和httpclient两端应用实例。
golang使用http client发起get和post请求示例
golang要请求远程网页,可以使用net/http包中的client提供的方法实现。查看了官方网站有一些示例,没有太全面的例子,于是自己整理了一下。get请求get请求可以直接http.Get方法,非常简单。1234567891011121314func httpGet() {    resp, err := http.Get("http://www.01happy.com/demo/accept
传输层的各种模式——ZeroMQ 库的使用 .
最近在研究 ZeroMQ 库的使用,所以在这里总结一下各种模式,以便日后拿来使用。 关于 ZeroMQ 库,我就不多介绍了,大家可以参考下面一些文章,以及他的官网、使用指南、API 参考、项目仓库等内容。 开源点评:ZeroMQ简介 ZeroMQ的学习和研究 ZeroMQ 的模式 ZeroMQ 的目标是成为 OSI 模型的传输层(Transport Layer)的标准协议
http client 快速开始
官方文档地址:http://hc.apache.org/httpcomponents-client-ga/quickstart.html 编辑工具:intelij idea httpclient是自动化工程的第一步,两个步骤带你快速开始httpclient 1. 准备http请求 2. httpclient访问http请求   准备http请求 1.为了快速开始,选择基于本地准备ht...
BPEL和JAVA(一篇不错的BPEL入门)
 原文出自:http://www.theserverside.com/tt/articles/article.tss?l=BPELJava 中文翻译:http://www.blogjava.net/hopeshared/archive/2006/04/21/42322.htmlIntroduction The idea and motivation behind almost each n
yii2框架-httpclient客户端
在中国互联网中,BAT作为中国互联网的三座大山,很多创业者或者初创公司都表示BAT掌握着中国互联网的80%资源,面对着这种生态级的巨头的触角延伸,他们成功的机会能有多大呢!确实无可否认,BAT玩的现在都是生态,是触及到各个方面的,他们不断地投资或者并购初创企业,或者一些独角兽,说到底他们即是在相互竞争,也是在防守。他们的这个生态体量级,是他们十几年来的技术,文化,商业模式,以及政策,社会发展到一定
HTTP Client related Jars
HTTP client jars, 项目中经常使用
计算机领域中的同步(Synchronous)和异步(Asynchronous)
计算机领域中的同步和异步的概念和我们平时生活中的同步和异步是不一样的,这就让很多人难以理解。 同步就是整个处理过程顺序执行,当各个过程都执行完毕,并返回结果。是一种线性执行的方式,执行的流程不能跨越。一般用于流程性比较强的程序,比如用户登录,需要对用户验证完成后才能登录系统。 异步则是只是发送了调用的指令,调用者无需等待被调用的方法完全执行完毕;而是继续执行下面的流程。是一种并行处理的方式,不...
go net/http Client使用——长连接客户端的使用
go net/http Client使用总结 Client数据结构 // A Client is an HTTP client. Its zero value (DefaultClient) is a // usable client that uses DefaultTransport. // // The Client's Transport typically has inte
vivado xdc约束基础知识3:Vivado时钟分组约束的三类应用(set_clock_groups)
来自:http://xilinx.eetrend.com/blog/9564在Vivado中通过set_clock_groups来约束不同的时钟组,它有三个选项分别是-asynchronous,-logically_exclusive和-physically_exclusive。-asynchronous应用于异步时钟,如下图所示,CLKA和CLKB由两个外部独立的晶振提供,那么跨时钟域路径即RE...
Servistate HTTP Editor & REST API Client1.6.1_0.crx
Create, edit and send HTTP requests. Run API tests, validate HTTP responses and measure API performance.
HttpClient使用详解(转)
Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会
[GO]HTTP 请求实例(GET)以及设置代理
GO语言在Bee框架下的应用,前台Ajax的后台HTTP请求
使用jetty 自带的http client!
一般情况下我们需要使用HttpClient时可供选择的技术有: 1、HttpURLConnection 2、Apache HttpClient 其他的除了写Socket 我都没有用过了。 偶然的机会发现Jetty 里面也自带了一个HttpClient,并且支持事件触发的处理方式。 [code="java"] HttpClient client = new HttpClient(...
使用HTTP Client 上传文件到服务器
package zzp.t.uploadfile; import java.io.File; import java.io.IOException; import org.apache.http.HttpResponse; import org.apache.http.ParseException; import org.apache.http.client.HttpClient; import
Paho MQTT 嵌入式c客户端研究笔记 (二)
paho.mqtt.embedded-c-master\MQTTPacket\samples,这个目录里面封装了发布消息、订阅消息的示例。运行pub0sub1,这个示例里面会去订阅主题消息、发布主题消息。并且订阅和发布的消息是同一个主题,所以在运行过程中会看到循环打印同一份消息。代码如下:#include <stdio.h> #include <string.h> #include <stdlib.
Golang 使用http Client下载文件
之前使用beego的http库的时候,有的情况需要下载文件。beego是能实现,但就是有点问题:不支持回调,没法显示下载速度,这在日常开发中是不可忍受的。 看了下beego的实现主要是使用了io.copy函数,于是就深入的看了下实现原理,发现挺简单的,于是就根据io.copy原理实现的一个简单的下载器 //定义要下载的文件 var durl = &amp;amp;quot;https://dl.google.c...
Intellij idea 控制台及RestClient中文乱码解决办法
修改启动配置文件打开IntelliJ IDEA 安装路径,小编的安装路径为:D:\ProgramFiles\JetBrains\IntelliJ IDEA 2017.1\bin 找到idea64.exe.vmoptions 文件,用记事本打开,在最后一行填加:“-Dfile.encoding=UTF-8”。如果是x86机器请修改idea.exe.vmoptions。-Xms128m -Xmx750m
HTTP Client C++实现
CHttpClient.rar HTTP Client C++实现
ActiveMQ 学习和问题
ActiveMQ入门实例 http://www.cnblogs.com/xwdreamer/archive/2012/02/21/2360818.html
文章热词 HTTP检测与数据挖掘 比特币钱包使用 单位全局变量使用 sklearn库使用 Solidity元组使用
相关热词 c# client go语言 http 使用代理 c++ client https 区块链学习使用的语言 使用python教程