问题标签 [asynchttpclient]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 异步任务永远不会在简单的 API 客户端中结束。僵局?
我是 C# 新手,我很可能误解了 await、async 和 Tasks 的正确用法:)
我想开发一个类 ( OWConnector
) 作为我的应用程序的 API 客户端,为此我开发了一个通用PostRequest
方法来执行 POST 请求。
PostRequest
不幸的是,当我使用 auth 方法(使用通用方法)时,该应用程序看起来陷入了死锁。
你能帮我理解问题出在哪里吗?我在代码中标记了调试器永远等待的地方。
表格方法
OWConnector 类
apache - 没有得到 Http 异步客户端的响应
我陷入了这种奇怪的情况,有时我的 HTTP 请求没有发出,或者我偶尔没有收到对我的请求的 HTTP 响应。我的应用程序会定期向其他 3rd 方服务发出几个(100 次)http 请求,其中大部分都可以正常工作。我使用带有自定义 HttpRequestIntercerptor 和 HttpResponseInterceptor 的 CloseableHttpAsyncClient(4.0 版)。这些主要是为了调试目的而添加的,RequestInterceptor 是链中的最后一个拦截器,而 ResponseInterceptor 是第一个拦截器。这个想法是在发送实际请求之前的最后阶段记录每个 http 请求,并在第一次接收到每个 http 响应时记录它。
我有以下模式来设置异步客户端:
为了提出请求,我这样做:
这是我的 AsyncHTTPResponseHandler 类:
基于此设置,我根据拦截器日志看到以下情况: 1. 我的应用程序 http 请求触发了异步客户端 HttpRequest,我得到了 HttpResponse -- Success。2. 我的应用程序 http 请求触发了一个 asyncclient HttpRequest(拦截器记录它),我没有得到这个请求的 HttpResponse --- 不知道为什么?3. 我的应用程序http请求没有触发asyncclient HttpRequest(拦截器没有记录它)并且我没有得到这个请求的HttpResponse ---不知道为什么?
关于我可以做些什么来解决这个问题或进一步调试这个问题的任何提示或建议?
谢谢!!
python - 使用 tornado.httpclient.AsyncHTTPClient 访问重定向响应的标头?
我有一个案例,我需要从重定向响应(例如登录页面)中提取 cookie。
我已经阅读了文档,甚至是源代码,但仍然找不到这样做的方法。
默认情况下,AsyncHTTPClient
将遵循重定向并返回重定向的响应,其中不包含Set-Cookie
因此无用的。如果给定 option follow_redirects=False
,它会抛出一个HTTPError
只是因为响应代码不是 200。我也尝试了阻塞HTTPClient
类,它是一样的。
那么,这样做的正确方法是什么?我认为当用户成功登录时,服务器将标头与标Set-Cookie
头一起发送是一种常见的方式。Location
它可以被认为是一个错误吗?或者,设计缺陷?
c# - 如何使用 C# 使用 HttpClient 发布 JSON?
我不知道如何使用 HttpClient 发布 JSON。我找到了一些解决方案,像这样,但我必须使用 HttpClient,导致异步并且必须添加一个标题。
这是我下面的代码。知道如何解决吗?
apache-camel - 多条骆驼路线和骆驼 AHC 组件的问题
我有多个调用在同一骆驼路线内配置的端点。我正在使用骆驼 ahc 组件。这在正常情况下工作正常。我们在性能测试期间遇到问题。
问题是这两个电话混合在一起。您能否建议如何避免这种情况。在我们完成对 READ 的调用之后,在后处理中,标头 Method 的值是 FEED。这两个电话似乎混在一起了。您能否建议如何解决此问题。
谢谢,拉克什
asynchttpclient - 如何等待所有请求完成
我在AsyncHttpClient
命令行程序中使用 ning。我需要等待所有请求结束,这样我才能安全地调用close()
客户端。挑战在于我从程序的许多不同部分提出了许多请求。下面剥离了自己的代码,显示了我从onCompleted
另一个请求中执行嵌套 HTTP 请求的一种情况:
这只是一个示例代码。真正的代码更复杂,并且有更多的 HTTP 调用。close()
在我打电话给客户之前,确保所有电话都完成的最佳方法是什么?
scala - playframework:NingWSClient 线程安全吗?
说我有
val client = new NingWSClient((new AsyncHttpClientConfig.Builder).build)
client
在当前的 JVM中使用它是线程安全的吗?
android - 使用 AsyncHttpClient 在 for 循环中调用 PHP
在获取我将值存储在本地数据库中的值之后,我试图使用 AsyncHttpClient 在 for 循环中调用 php 文件。
我正在向我的 php 文件发送参数,因为它需要从 mySQL 获取数据。获取部分工作正常,但是在存储数据时我遇到了问题。我实际上是存储通过 php 接收的值,然后将参数值添加到同一个数据库表中。
问题是,当我尝试获取数据时,循环发送正确的参数值,但是当接收到 JSONARRAY 数据并将其存储到 DB 参数值时,它始终是 for 循环中的最后一个数字。这是代码和示例:
这里 parent_id = id2 之前的第一个日志会立即打印所有值,而不是一个一个地打印。
像这样的东西:
如果您检查日志: DB 值立即打印 4,3,5,63,62 然后在 http 请求之后它始终是循环中的值 62。
我不确定到底发生了什么?
有人可以帮助我了解为什么会发生这种情况以及如何在循环中调用异步 http 请求吗?
谢谢!
java - 使用 asyncHttpClient.get() 的不完整 JSON 响应
我asyncHttpClient.get()
在响应应返回大量数据但响应不完整(且无法解析)的情况下使用。
参考链接:asyncHttpResponseHandler.onSuccess
这是我的代码:
为什么回复不完整?
tomcat - AsyncContext、超时和重试
我们有一个包含很多组件的客户端/服务器 Web 应用程序——包括代理中的 AsyncContext 和 ning AsyncHttpClient——我只是想弄清楚超时和重试(以及 startAsync/complete)是如何工作的。这是完整的结构(简化)...
GWT 2.7 应用程序响应操作(例如,按钮单击)调用应用程序服务器上的 servlet,该 servlet 通过我们的代理 servlet 到另一个主机以执行长时间运行的任务。在开发中,我们使用嵌入式码头服务器运行/调试 GWT 应用程序 - 在生产中,我们将战争部署到 tomcat7。
第一个 servlet 使用 RestEasy 3.0.8(和 ApacheHttpClient4Executor)来创建通过我们的代理 servlet 的调用。我们使用 ning AsyncHttpClient 1.7.5、startAsync/complete 和 AsyncHandler 来调用远程主机上的服务器(也使用 RestEasy)。这是由我目前无法咨询的其他人设置的。
我不确定何时调用 complete() 或如何停止/启用重试。两个更大的问题是,如果我们在超时时/前后完成()(在上下文超时的代理内或对 [AsyncResponse] 超时的远程服务器的调用),我们经常会得到 IllegalStateException(IDLE,initial);并且......当上下文超时发生时,Jetty 似乎完全重新启动请求(在代理中),我们没有明显的方法来检查这种情况是否正在发生或(智能地)停止它等等。所以如果调用是使用输入流,第二次/重试使用相同的输入流,这会导致远程服务器在第二次调用时抛出 EOF 异常(因为没有剩余字节要读取),同时继续处理它收到的第一个调用。
我尝试过/学到的...
RestEasy/ApacheHttpClient4Executor 调用似乎永远不会超时(因此设置重试并不重要) - 它要么成功,要么失败,取决于调用另一端发生的情况(并且似乎永远等待)......例子...
HttpParams 参数 = client.getParams(); HttpConnectionParams.setConnectionTimeout(params, 5000); HttpConnectionParams.setSoTimeout(params, 5000);
((AbstractHttpClient) 客户端).setHttpRequestRetryHandler(new DefaultHttpRequestRetryHandler(3, true));
AsyncHttpClientConfig 上的 setConnectionTimeoutInMs() 似乎什么也没做(除非它只是建立服务器连接需要多长时间 - 我认为它包括完整的请求时间)
如果我以超时启动Async 并执行请求,如果/当它在请求完成之前超时,那么上下文侦听器将收到一个 onTimeout 事件,并且 Jetty 将重新启动整个请求(导致侦听器也收到一个 onStartAsync 事件相同的上下文)。Tomcat 不这样做。另一个人似乎遇到了同样的事情,但没有回复......
http://dev.eclipse.org/mhonarc/lists/jetty-dev/msg02269.html
在 onTimeout 中调用 complete() 会停止第二个请求。而是在 onStartAsync 中调用 complete() 会产生奇怪的结果(第二次调用仍然发生,并且 AsyncHandler 中的 onComplete 在某个时候被调用,但随后它会引发 IllegalStateException 导致 onThrowable 被调用 [??])
在此配置中在 AsyncHttpClient 上设置重试似乎没有任何作用(除非它只发生在 asyncTimeout、requestTimeout 等的某种组合上——我还没有弄清楚)
设置响应状态(例如设置为 408)似乎在极少数情况下有效,但由于服务器上的 EOF 异常生成 500 并返回给客户端而我无法做很多事情(第一次调用)仍在进行中,我不知道这是第二次调用 [除了它失败] 或者它是由于超时等而发生的)
可以从 AsyncContext 上的方法收集到的信息很少。我可以使用反射来获取一些我可以使用的数据,但没有它......我怎么知道它是否被重试?我怎么知道是什么状态来决定是否调用complete()?等等等等
关于 AsyncContext (et al) 的在线信息似乎很少,令人困惑的 javadoc,并且只有关于 SO 的小/孤立的修复建议。到目前为止,我遇到的最好的是:
底线:任何人都可以解释或指出关于 AsynContext/AsyncHandler 如何工作和/或如何正确使用它和/或帮助我理解我在这里看到的内容的好文档。谢谢!