java 异步https请求_Java异步HTTP请求

需要用到的包(包版本应该可能不同):

httpcore-4.1.4.jar

httpsayncclient-4.0-alpha3.jar

httpcore-nio-4.2-alpha3.jar

代码(来自http://hc.apache.org/httpcomponents-asyncclient-dev/httpasyncclient/examples/org/apache/http/examples/nio/client/AsyncClientHttpExchangeStreaming.java):

/*

* ====================================================================

* Licensed to the Apache Software Foundation (ASF) under one

* or more contributor license agreements. See the NOTICE file

* distributed with this work for additional information

* regarding copyright ownership. The ASF licenses this file!

* to you under the Apache License, Version 2.0 (the

* "License"); you may not use this file except in compliance

* with the License. You may obtain a copy of the License at

*

* http://www.apache.org/licenses/LICENSE-2.0

*

* Unless required by applicable law or agreed to in writing,

* software distributed under the License is distributed on an

* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

* KIND, either express or implied. See the License for the

* specific language governing permissions and limitations

* under the License.

* ====================================================================

*

* This software consists of voluntary contributions made by many

* individuals on behalf of the Apache Software Foundation. For more

* information on the Apache Software Foundation, please see

* .

*

*/

package sync_http;

import java.io.IOException;

import java.nio.CharBuffer;

import java.util.concurrent.Future;

import org.apache.http.HttpResponse;

import org.apache.http.impl.nio.client.DefaultHttpAsyncClient;

import org.apache.http.nio.IOControl;

import org.apache.http.nio.client.HttpAsyncClient;

import org.apache.http.nio.client.methods.AsyncCharConsumer;

import org.apache.http.nio.client.methods.HttpAsyncMethods;

import org.apache.http.protocol.HttpContext;

public class AsyncClientHttpExchangeStreaming {

public static void main(String[] args) throws Exception {

HttpAsyncClient httpclient = new DefaultHttpAsyncClient();

httpclient.start();

try {

Futurefuture = httpclient.execute(

HttpAsyncMethods.createGet("http://www.baidu.com/"),

new MyResponseConsumer(), null);

Boolean result = future.get();

if (result != null && result.booleanValue()) {

System.out.println("Request successfully executed");

} else {

System.out.println("Request failed");

}

System.out.println("Shutting down");

} finally {

httpclient.shutdown();

}

System.out.println("Done");

}

static class MyResponseConsumer extends AsyncCharConsumer{

private int times = 0;

private String getTimes() {

return "\n\n### 第" + ++times + "步\n###";

}

@Override

protected void onResponseReceived(final HttpResponse response) {

System.out.println(getTimes() + "onResponseReceived");

}

@Override

protected void onCharReceived(final CharBuffer buf, final IOControl ioctrl) throws IOException {

System.out.println(getTimes() + "onCharReceived");

while (buf.hasRemaining()) {

System.out.print(buf.get());

}

}

@Override

protected void releaseResources() {

System.out.println(getTimes() + "releaseResources");

}

@Override

protected Boolean buildResult(final HttpContext context) {

System.out.println(getTimes() + "buildResult");

return Boolean.TRUE;

}

}

}

更多官方例子,参看: http://hc.apache.org/httpcomponents-asyncclient-dev/examples.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值