asynchronous http client 的使用

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

0

查看全部1条回答

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
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]
注解实现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...
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的用法实例(详解+源码)
安卓客户端与后台进行通信有两种办法,即HTTP通信和socket通信,我们这里采用的是HTTP通信的通信方式,基于TCP/IP协议簇。 先来比较一下几种HTTP通信方式 一,  HttpUrlConnection // http地址 String httpUrl = "http://192.168.1.1:8080/GourmetOrderServer/loginServlet?na
Simulation and Synthesis Techniques for Asynchronous FIFO Design
讲述异步FIFO设计的景点例子,包含verilog源码,仿真,框图等,IC数字设计的基础之一
Boost.Asio的使用技巧
基本概念 Asio proactor I/O服务 work类run() vs poll()stop()post() vs dispatch()buffer类缓冲区管理 I/O对象 socket信号处理定时器strand 参考 最近尝试使用了一下Boost.Asio,不知道是否因为各大公司都有自己相对成熟的网络库的缘故,网络上Asio相关的资料实在不多,而且很多翻来覆去
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
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.
用最简单的方式实现基于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")
servlet启用gzip过滤器后AsyncContext异步不成功的的问题
看台湾林信良的《JSP&Servlet学习笔记第二版》5.4节异步处理时遇到的问题 异步处理的servlet若存在过滤器,则过滤器的注解@WebFilter应设置asyncSupported=true, 否则会报错A filter or servlet of the current chain does not support asynchronous operations. 但是...
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
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
http client 快速开始
官方文档地址:http://hc.apache.org/httpcomponents-client-ga/quickstart.html 编辑工具:intelij idea httpclient是自动化工程的第一步,两个步骤带你快速开始httpclient 1. 准备http请求 2. httpclient访问http请求   准备http请求 1.为了快速开始,选择基于本地准备ht...
EJB基础二 异步调用
EJB的异步相当简单。其实就是在方法上加个@Asynchronous注解就够了。 异步方法有两种返回类型,一是void,一是Future,我个人建议还是返回void。因为返回Future还需要等待结果,就是同步了,所以没有了异步意义。就比如下面的代码,就是一个典型的带异步调用的无状态EJB。因为返回的是void,所以可以不处理返回值。 package asyncejb; import ja
使用IDEA自带工具Rest Client进行http测试
1、插件 RestClient2、乱码问题后台接收为乱码将右侧 Request Body 修改为 Text 即可后台接收数据正常
传输层的各种模式——ZeroMQ 库的使用 .
最近在研究 ZeroMQ 库的使用,所以在这里总结一下各种模式,以便日后拿来使用。 关于 ZeroMQ 库,我就不多介绍了,大家可以参考下面一些文章,以及他的官网、使用指南、API 参考、项目仓库等内容。 开源点评:ZeroMQ简介 ZeroMQ的学习和研究 ZeroMQ 的模式 ZeroMQ 的目标是成为 OSI 模型的传输层(Transport Layer)的标准协议
异步(Asynchronous)机制(三)--和同步机制的本质区别
矛盾很久,不确定是否该用“本质”这个词,觉着自己好像还没资格这么说。其实,这篇探讨的是换个角度看待同步和异步的差异。   为了分析同步和异步的区别,还是以前两篇中出现过的Client发送request和接收response的程序为例。如果是同步机制的程序,大致应该是这样的(只是一些伪代码): [java] view plaincopy Socket sock = con
同步(Synchronous)和异步(Asynchronous)的概念
web项目中的同步与异步 在我们平时的web项目开发中会经常听到ajax请求这样一个称呼,在web项目中可以通过js或者jquery发送同步请求又或者异步请求,同步请求呢往往代表着你必须等待这次请求结束并且刷新整个界面之后,你才能进行下一步操作,而异步请求则可以不刷新界面,它会立即返回,界面也可以继续执行其它的操作。   生活中又如何理解呢? 比如你在使用支付宝的时候,想给你的女朋友发送一...
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
HTTP Client C++实现
CHttpClient.rar HTTP Client C++实现
HTTP Client related Jars
HTTP client jars, 项目中经常使用
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不
AJAX简介 异步 JavaScript 及 XML(Asynchronous JavaScript And XML)
AJAX 指异步 JavaScript 及 XML(Asynchronous JavaScript And XML)。 AJAX 是一种在 2005 年由 Google 推广开来的编程模式。 AJAX 不是一种新的编程语言,而是一种使用现有标准的新方法。 通过 AJAX,你可以创建更好、更快以及更友好的 WEB 应用程序。 AJAX 基于 JavaScript 和 HTTP 请求(HTTP requests)。 AJAX 指异步 JavaScript 及 XML(Asynchronous JavaScript And XML)。
python 实现httpclient发送请求
>>> import httplib >>> conn = httplib.HTTPConnection("www.python.org") >>> conn.request("GET", "/index.html") >>> r1 = conn.getresponse() >>> print r1.status, r1.reason 200 OK >>> data1 = r1.read() >>
Golang 使用http Client下载文件
之前使用beego的http库的时候,有的情况需要下载文件。beego是能实现,但就是有点问题:不支持回调,没法显示下载速度,这在日常开发中是不可忍受的。 看了下beego的实现主要是使用了io.copy函数,于是就深入的看了下实现原理,发现挺简单的,于是就根据io.copy原理实现的一个简单的下载器 //定义要下载的文件 var durl = "https://dl.google.c...
C++ httpclient类
封装好的http client类,使用方便。
异步(Asynchronous)机制(一)
这里有两篇关于I/O的文章还有一篇更加详细的。但是这些只是设计了网络I/O。看到了一些东系统的角度分析异步机制的文章,所以就转载过来了。 所谓同步,简单的说,A告诉B去做某件事情,然后就一直等待,直到B做完后返回给A,A才继续做其它的事情; 所谓异步,相反的,A告诉B做某件事情,然后就去干其它的事情了,B做完后再通知A。 无论是同步还是异步,其实都是指两个对象之间的交互。所以,判断什
使用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
Http Client
NULL 博文链接:https://fyan.iteye.com/blog/981596
PhpStorm内置的REST客户端 使用方法
http://confluence.jetbrains.com/display/PhpStorm/Built-in+REST+Client+in+PhpStorm 跳到元数据结束 由Maarten Balliauw创建,最后由米哈伊尔·温克于2015年8月3日修改 转到元数据的开始   建立一个REST API?需要测试对Web
STM32开发笔记44:RTC驱动程序的移植
单片机型号:STM32F070F6P6 本文介绍,将RTC驱动程序移植到自己的工程项目中的方法。本项目仅使用了RTC的实时时钟功能,没有启动定时报警等功能。   1、在STM32CubeMX中对RTC进行配置,如下图所示,激活了时钟源和日历功能。 2、配置RTC的时钟,如下图所示,STM32F070F6P6不能接外部的32.768K的晶振,所以只能使用HSE或LSI RC供给,考虑LS...
1.3 Kettle从web抽取数据
一. 基于文本文件的web客户端抽取 由于kettle使用了Apache VFS系统,VFS系统可以像处理文本文件一样处理http文件,所以在‘文本文件输入’步骤中可以直接将URL作为文件名: 二. HTTP客户端使用HTTP client 步骤,它调用URL并返回一个字符串作为结果。返回的字符串是用分隔符分割的文本文件或是XML格式的字符串,可以使用XML输入步骤进一步处理。 将URL填入生
DHC-REST-HTTP-API-Client_v0.8.1.1
一款可以直接通过谷歌浏览器来测试接口的应用。测试更方便
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
文章热词 设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java的http学习 http学习 java