我正在尝试为网站做一个简单的GET请求,但我得到了未知的主机异常.
以下是我的代码 -
DefaultHttpClient client = new DefaultHttpClient();
HttpHost targetHost=null;
targetHost= new HttpHost("google.com/", 80, "http");
HttpGet httpget = new HttpGet("about-us.html");
BasicHttpContext localcontext = new BasicHttpContext();
try {
HttpResponse response = client.execute(targetHost, httpget, localcontext);
Run Code Online (Sandbox Code Playgroud) 所以我使用apache HttpComponents来处理java中的http请求.现在我想重用一下DefaultHttpClient,应该对这个例子有什么看法:http://wiki.apache.org/HttpComponents/QuickStart .示例本身给出了一个ssl错误,因此我进行了修改并简化了一点.现在我总是得到一个org.apache.http.client.ClientProtocolException
这是我的示例程序,基本上我只是使用相同的请求2个网页DefaultHttpClient.
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
public class ClientFormLogin {
public static void main(String[] args) throws Exception {
DefaultHttpClient httpclient = new DefaultHttpClient();
//Handle first request.
HttpGet httpget = new HttpGet("http://tweakers.net/nieuws/82969/amazon-nederland-opent-digitale-deuren-in-september.html");
HttpResponse response = httpclient.execute(httpget);
System.out.println("Execute finished");
HttpEntity entity = response.getEntity();
String page = readInput(entity.getContent());
System.out.println("Request one finished without problems!");
//Handle second request
HttpGet httpost = new HttpGet("http://gathering.tweakers.net/forum/list_messages/1506977/last");
response = httpclient.execute(httpost); …Run Code Online (Sandbox Code Playgroud) 如何衡量我的应用程序的HttpClients带宽使用情况?(HttpComponents 4.3)
我有一个使用HttpClient与服务器通信的客户端应用程序.所有请求都使用池化http连接管理器通过同一客户端完成.不幸的是,大多数请求直接使用httpclient(不是全部),因此在请求位置测量带宽是可行的,但很痛苦.
在客户端的构造函数或连接管理器中是否有一个位置,我可以简单地注入我自己的带宽监视器(或者是已经构建在我尚未发现的某个地方)?
我可以这样做吗?
HttpClientBuilder.create().addInterceptorLast(new HttpResponseInterceptor()
{
@Override
public void process(HttpResponse response, HttpContext context) throws HttpException, IOException
{
}
}).build();
Run Code Online (Sandbox Code Playgroud) 我有一个简单的Apache Camel路由,该路由从队列中获取序列化文件并将其发送到一些外部资源:
public class MyRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
from("activemq:alfresco-queue")
.process(new Processor() {
public void process(Exchange exchange) throws Exception {
MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
multipartEntityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
multipartEntityBuilder.addPart("file", new ByteArrayBody(exchange.getIn().getBody(byte[].class),
exchange.getIn().getHeader("fileName", String.class)));
exchange.getIn().setBody(multipartEntityBuilder.build().getContent());
}
})
.setHeader(Exchange.HTTP_METHOD, constant(org.apache.camel.component.http4.HttpMethods.POST))
.to("http4://vm-alfce5-31.....com:8080/alfresco/s/someco/queuefileuploader?guest=true")
.process(new Processor() {
public void process(Exchange exchange) throws Exception {
System.out.println("The response code is: " +
exchange.getIn().getHeader(Exchange.HTTP_RESPONSE_CODE));
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
蓝图配置文件:
<?xml version="1.0"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd">
<bean id="myRouteBuilder" class="org.fusesource.example.MyRouteBuilder"/>
<camelContext id="blueprintContext" trace="false" …Run Code Online (Sandbox Code Playgroud) activemq-classic jms apache-camel apache-httpcomponents jbossfuse
我正在创建一个默认的HTTP客户端使用HttpClients.createDefault(),但我想更改默认超时(它看起来很长,现在已经超过一分钟而且没有超时).
是否可以仅更改默认客户端的超时或者是否必须从头开始构建客户端?
我正在使用apache HTTP客户端的4.3.3版本.