标签: asynchttpclient

是否有一个 swagger-codegen 扩展可以在 java 中生成 asynchttp 客户端?

我第一次尝试使用 swagger-codegen 为我的 REST 服务自动生成 java 客户端。我下载了 cli 并运行了这个命令:

java -jar ~/Downloads/swagger-codegen-cli-2.2.1.jar generate \
    -i http://my.services.url/swagger.json \
    -l java
Run Code Online (Sandbox Code Playgroud)

生成的代码使用 okhttp 客户端实现。我真的很想利用 CompletableFutures,但这似乎远远超出了 swagger 所能提供的范围。有谁知道从 swagger codegen 生成 asynchttp 客户端的方法吗?这是一个已解决的问题还是需要通过扩展源代码DefaultCodegen

java swagger asynchttpclient swagger-codegen

5
推荐指数
0
解决办法
319
查看次数

使用HttpClient的HTTP请求太慢了?

我正在尝试编写一个Android应用程序,它将一些帖子值发送到托管在专用服务器上的php文件并存储数组resoult

代码是这样的

   HttpPost httppost;
    DefaultHttpClient httpclient;

    httppost = new HttpPost("http://IP/script.php"); 
    HttpParams param = new BasicHttpParams(); 
    param.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);


  //  httppost.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, false);

    HttpProtocolParams.setContentCharset(param, "UTF-8");

    httpclient = new DefaultHttpClient(param);

    ResponseHandler <String> res=new BasicResponseHandler(); 
    List<NameValuePair> nameValuePairs;

    nameValuePairs = new ArrayList<NameValuePair>(); 
    nameValuePairs.add(new BasicNameValuePair("id","1"));
    nameValuePairs.add(new BasicNameValuePair("api", "1"));


    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
Log.v("1",System.currentTimeMillis()+"");// Log to know the time diff
    String result= httpclient.execute(httppost, res);
Log.v("2",System.currentTimeMillis()+""); //  Log to know the time diff
Run Code Online (Sandbox Code Playgroud)

这段代码浪费了大约2.5秒(在3G或WiFi上)发送帖子并从服务器获得"ok"字符串,即使有好的wifi这次只下来2.2/2.0秒

我在我的计算机上运行了一个简单的Ajax发送邮件脚本,通过同一部手机和3G连接到互联网,需要大约.300ms才能做同样的事情¿相同的连接,相同的动作,2秒的差异?

/// ***更新

我在我的计算机上再次尝试了我的jquery脚本(使用移动3G +/HDSPA连接)

的平均时间应答是大约250毫秒,但总是在第一请求到1.7secs,我试图以30秒的间隔发送讯息和我得到1.5秒的平均时间,然后我试图发送以2秒的间隔的柱,所述第一是1.41s,接近252ms

在这里,你们可以查看图表:http://i46.tinypic.com/27zjl8n.jpg

这种与电缆连接(标准家用DSL)相同的测试始终提供约170ms间隔的固定时间响应(这里没有可靠的参数,但恕我直言,可能第一次尝试略高一点) …

eclipse android httpclient keep-alive asynchttpclient

4
推荐指数
1
解决办法
1万
查看次数

Ning:连接到websocket并等待响应

使用Ning创建并连接到Websocket,以下是我的配置,

 NettyAsyncHttpProviderConfig config = new NettyAsyncHttpProviderConfig();
 config.addProperty(NettyAsyncHttpProviderConfig.USE_BLOCKING_IO, "true");

 AsyncHttpClientConfig.Builder builder = new AsyncHttpClientConfig.Builder()
                .setAsyncHttpClientProviderConfig(config);

 AsyncHttpClient client = new AsyncHttpClient(
                new NettyAsyncHttpProvider(builder.build()));

 AsyncHttpClient.BoundRequestBuilder requestBuilder = client.prepareGet(createUri(method))
                .addHeader(HttpHeaders.Names.CONNECTION, "Upgrade")
                .addHeader(HttpHeaders.Names.UPGRADE, "WebSocket");

 websocket = requestBuilder.execute(new WebSocketUpgradeHandler.Builder()
                .addWebSocketListener(this).build()).get();
Run Code Online (Sandbox Code Playgroud)

使用websocket发送短信,

 if (websocket!=null && websocket.isOpen())
       websocket.sendTextMessage(jObj.toString());// send
Run Code Online (Sandbox Code Playgroud)

onMessage() 侦听器的方法将响应添加到列表中

@Override
public void onMessage(String message) {
   serverResponse.add(message);
}
Run Code Online (Sandbox Code Playgroud)

发送文本消息后,我有方法格式化响应并保存结果

result = responseFromServer();

private String responseFromServer() {
    String response = null;
    sleep(100);
   if(!serverResponse.isEmpty())
      //format the message which is added in list
    return response;
}
Run Code Online (Sandbox Code Playgroud)

问题是,如果我在上面的方法中没有'sleep(100)',对于request1- response为null,对于request2,我得到response1.我希望websocket能够同步工作,这样,一旦我发送消息,就应该等待响应接收并继续前进!有什么建议!

java websocket asynchttpclient

4
推荐指数
1
解决办法
3969
查看次数

宁异步http客户端如何接受任何证书

我在此页面上看到如何做https

http://sonatype.github.com/async-http-client/ssl.html

但是,如果我只是想忽略并接受任何证书,因为在这种环境中,我现在不在乎中间的人,因为它处于隔离的环境中,而我正在做一些工作以对QA数据进行自动化测试,该怎么办?

也许我的问题是如何伪造Java的SSL堆栈中的SSL,以便它在另一端接受任何证书(这不是双向的,因为它是https)。

上面链接中客户端的通用代码是

    char[] keyStorePassword = "changeit".toCharArray();
    KeyStore ks = KeyStore.getInstance("JKS");
    //ks.load(keyStoreStream, keyStorePassword);

    char[] certificatePassword = "changeit".toCharArray();
    KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
    kmf.init(ks, certificatePassword);

    KeyManager[] keyManagers = kmf.getKeyManagers();
    javax.net.ssl.TrustManager tm = new MyTrustMgr();
    javax.net.ssl.TrustManager[] trustManagers = new javax.net.ssl.TrustManager[]{tm };
    SecureRandom secureRandom = new SecureRandom();

    SSLContext ctx = SSLContext.getInstance("TLS");
    ctx.init(keyManagers, trustManagers, secureRandom);
    return ctx;
Run Code Online (Sandbox Code Playgroud)

好吧,解决这个问题,我发现由于某些原因仍然无法解决问题

    X509TrustManager tm = new X509TrustManager() {
        public void checkClientTrusted(X509Certificate[] xcs,
                String string) throws CertificateException {
        }
        public void checkServerTrusted(X509Certificate[] xcs,
                String string) throws CertificateException { …
Run Code Online (Sandbox Code Playgroud)

ssl ning netty asynchttpclient

3
推荐指数
1
解决办法
2223
查看次数

如何在 AsyncHttpClient 中设置代理?

我的应用程序使用 AsyncHttpClient 库进行网络操作。我的问题是我需要指定带有端口的代理才能连接到远程服务器。有什么想法来指定它吗?

asynchttpclient

3
推荐指数
1
解决办法
3048
查看次数

如何使用 AsyncHttpClient 发送 JSON 正文?

我正在使用AsyncHttpClient库从一个非常基本的 Android 应用程序发出 HTTP 请求。现在,我只需要使用包含用户名和密码的JSON正文(这是强制约束,因为我必须使用的REST服务需要该格式的请求)发出POST请求。

由于不太了解 Android 开发和相关库,我尝试向 Google 发出一个简单的GET请求,结果完美。然后,我尝试切换到POST请求,但从文档看来,post 方法严格需要RequestParams参数。我确实需要发送JSON:有没有办法做到这一点AsyncHttpClient?我尝试了在网络和 StackOverflow 上找到的几种解决方案,但不幸的是没有人起作用。

最终,作为最后一次机会,我愿意切换库(并且也欢迎这个方向的建议 - 至少如果它们易于使用AsyncHttpClient,考虑到我的经验不足),但我更愿意坚持我现在的选择。

感谢您的帮助。

java post android json asynchttpclient

3
推荐指数
1
解决办法
6921
查看次数

使用Java和async-http-client进行基本身份验证的URL内容

我正在编写Java lib并且需要对URL执行请求 - 当前使用ning的async-http-client - 并获取其内容.所以我有一个get方法返回获取文档内容的String.但是,为了能够获得它,我必须执行HTTP基本身份验证,并且我在Java代码中没有成功:

public String get(String token) throws IOException {
    String fetchURL = "https://www.eventick.com.br/api/v1/events/492";

    try {
        String encoded = URLEncoder.encode(token + ":", "UTF-8");
        return this.asyncClient.prepareGet(fetchURL)
        .addHeader("Authorization", "Basic " + encoded).execute().get().getResponseBody();
    }
}
Run Code Online (Sandbox Code Playgroud)

代码不返回任何错误,它只是不提取URL,因为没有正确设置身份验证标头.

使用卷曲-u选项,我可以轻松获得我想要的东西:

curl https://www.eventick.com.br/api/v1/events/492 -u 'xxxxxxxxxxxxxxx:'

返回:

{"events":[{"id":492,"title":"Festa da Bagaceira","venue":"Mangueirão de Paulista",
"slug":"bagaceira-fest", "start_at":"2012-07-29T16:00:00-03:00",
"links":{"tickets":[{"id":738,"name":"Normal"}]}}]}
Run Code Online (Sandbox Code Playgroud)

如何在Java中完成?使用async-http-client lib?或者,如果您知道如何使用其他方式...

欢迎任何帮助!

java asynchttpclient

2
推荐指数
1
解决办法
7101
查看次数

无法覆盖JsonHttpResponseHandler中的onSuccess()方法

我正在http://www.raywenderlich.com/78578/android-tutorial-for-beginners-part-3学习宁静的服务

遇到的时候

 AsyncHttpClient client = new AsyncHttpClient();
        client.get(QUERY_URL + urlString,
        new JsonHttpResponseHandler() {

            @Override
public void onSuccess(JSONObject jsonObject) {
// Display a "Toast" message
// to announce your success
Toast.makeText(getApplicationContext(), "Success!",   Toast.LENGTH_LONG).show();

// 8. For now, just log results
Log.d("omg android", jsonObject.toString());
}      
@Override

public void onFailure(int statusCode, Throwable throwable, JSONObject  error) {
// Display a "Toast" message 
// to announce the failure
Toast.makeText(getApplicationContext(), "Error: " + statusCode + " " +    throwable.getMessage(), Toast.LENGTH_LONG).show();

// Log error message …
Run Code Online (Sandbox Code Playgroud)

java rest android asynchttpclient

2
推荐指数
1
解决办法
5681
查看次数

如何在scalaz Task中关闭AsyncHttpClient

我试图将AsyncHttpClient和Scalaz Task结合在一起.通常,如果我使用AsyncHttpClient,我可以调用client.close来停止客户端.

val asyncHttpClient = new AsyncHttpClient()
println(asyncHttpClient.prepareGet("http://www.google.com"))

asyncHttpClient.close()
Run Code Online (Sandbox Code Playgroud)

所以当前将停止.但是,如果我将api调用包装到Task中.我不知道如何阻止它.

  def get(s: String) = Task.async[Int](k => {
    asyncHttpClient.prepareGet(s).execute(toHandler)
    Thread.sleep(5000)
    asyncHttpClient.closeAsynchronously()
  } )

  def toHandler[A] = new AsyncCompletionHandler[Response] {
    def onCompleted(r: Response) = {
      println("get response ", r.getResponseBody)
      r
    }
    def onError(e: Throwable) = {
      println("some error")
      e
    }
  }

println(get("http://www.google.com").run)
Run Code Online (Sandbox Code Playgroud)

当前进程仍在运行.我在想,原因是Task和AsynClient都是异步的.我不知道应该怎么做才能关闭它

提前谢谢了

scala scalaz asynchttpclient

2
推荐指数
1
解决办法
674
查看次数

在io.netty.handler.ssl.Sslcontext中禁用主机名验证

有没有办法禁用io.netty.handler.ssl.Sslcontext的主机名验证?

我有以下代码:

sslContext = SslContextBuilder
        .forClient()
        .sslProvider(SslProvider.JDK)
        .trustManager(InsecureTrustManagerFactory.INSTANCE)
        .build();

DefaultAsyncHttpClientConfig.Builder builder = new DefaultAsyncHttpClientConfig.Builder();
builder.setSslContext(sslContext);
AsyncHttpClientConfig asyncHttpClientConfig = builder.build();
Run Code Online (Sandbox Code Playgroud)

这在信任所有证书的本地主机上很好用,但是我需要连接到本地ip才能在服务上进行一些测试,但我遇到了这个异常:

java.util.concurrent.CompletionException: java.net.ConnectException: General SSLEngine problem
    at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:292)
    at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:308)
    at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:593)
    at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:577)
    at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474)
    at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1977)
    at org.asynchttpclient.netty.NettyResponseFuture$1.run(NettyResponseFuture.java:269)
    at org.asynchttpclient.netty.NettyResponseFuture$2.execute(NettyResponseFuture.java:277)
    at org.asynchttpclient.future.ExecutionList.executeListener(ExecutionList.java:125)
    at org.asynchttpclient.future.ExecutionList.execute(ExecutionList.java:115)
    at org.asynchttpclient.future.AbstractListenableFuture.runListeners(AbstractListenableFuture.java:80)
    at org.asynchttpclient.netty.NettyResponseFuture.abort(NettyResponseFuture.java:252)
    at org.asynchttpclient.netty.channel.NettyConnectListener.onFailure(NettyConnectListener.java:162)
    at org.asynchttpclient.netty.channel.NettyConnectListener$1.onFailure(NettyConnectListener.java:131)
    at org.asynchttpclient.netty.SimpleFutureListener.operationComplete(SimpleFutureListener.java:26)
    at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:514)
    at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:507)
    at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:486)
    at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:427)
    at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:129)
    at io.netty.handler.ssl.SslHandler.notifyHandshakeFailure(SslHandler.java:1235)
    at io.netty.handler.ssl.SslHandler.setHandshakeFailure(SslHandler.java:1230)
    at io.netty.handler.ssl.SslHandler.setHandshakeFailure(SslHandler.java:1205)
    at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1060)
    at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:900)
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:411)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248)
    at …
Run Code Online (Sandbox Code Playgroud)

java ssl netty asynchttpclient

2
推荐指数
1
解决办法
3867
查看次数