Tag: apache httpclient 4.x

Apache Camel Http和SSL

我一直试图让一个双向的ssl / https代理与Camel一起工作。 我已经能够使用双向ssl设置Jetty组件,现在我正在尝试使用Http4组件来完成代理的客户端。 当我将docker流量路由到日志组件时,一切都很顺利,2路ssl信任链也没问题。 当我抛出Http4组件时,它会爆发一个未经过身份validation的对等exception。 我使用的是Camel 2.7.0 这是我到目前为止所拥有的 public static void main(String[] args) throws Exception { CamelContext context = new DefaultCamelContext(); JettyHttpComponent jetty = context.getComponent(“jetty”, JettyHttpComponent.class); SslSelectChannelConnector sslConnector = new SslSelectChannelConnector(); sslConnector.setPort(9443); sslConnector.setKeystore(“/home/brian/jboss.keystore”); sslConnector.setKeyPassword(“changeit”); sslConnector.setTruststore(“/home/brian/jboss.truststore”); sslConnector.setTrustPassword(“changeit”); sslConnector.setPassword(“changeit”); sslConnector.setNeedClientAuth(true); Map connectors = new HashMap(); connectors.put(9443, sslConnector); jetty.setSslSocketConnectors(connectors); final Endpoint jettyEndpoint = jetty.createEndpoint(“jetty:https://localhost:9443/service”); KeyStore keystore = […]

修复java.net.SocketTimeoutException:读取超时

我有一个RESTful服务器,它从客户端获取http POST输入以在服务器上投票。 我已经将Apache HTTPClient用于客户端。 public boolean vote() { HttpClient client = new DefaultHttpClient(getHttpParameters()); HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); // Timeout Limit HttpResponse response; try { HttpPost post = new HttpPost(“http://127.0.0.1:8080/ws/”); StringEntity se = new StringEntity(“{ \”song_id\” : \”2\” }”); se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE,”application/json”)); post.setEntity(se); response = client.execute(post); if (response != null) { InputStream in = response.getEntity().getContent(); // Get the data […]

如何使用RestTemplate为每个请求设置RequestConfiguration?

我有一个供客户使用的库,他们正在传递DataRequest对象,该对象具有userid , timeout和其他一些字段。 现在我使用这个DataRequest对象创建一个URL,然后使用RestTemplate进行HTTP调用,我的服务返回一个JSON响应,我用它来创建一个DataResponse对象并将这个DataResponse对象返回给它们。 下面是我的DataClient类,客户通过将DataRequest对象传递给它。 如果在getSyncData方法中花费太多时间,我在DataRequest使用客户传递的超时值来超时请求。 public class DataClient implements Client { private final RestTemplate restTemplate = new RestTemplate(); private final ExecutorService service = Executors.newFixedThreadPool(10); // this constructor will be called only once through my factory // so initializing here public DataClient() { try { restTemplate.setRequestFactory(clientHttpRequestFactory()); } catch (Exception ex) { // log exception } […]

连接和连接请求超时

我正在使用Http Apache Components来执行http交互。 我需要调整我的http客户端。 为此,我有两个参数:连接超时和连接请求超时。 在图书馆文档和源代码中(没有找到评论)我没有找到这个术语的定义。 我需要知道他们究竟是什么意思。 可能是他们在HTTP协议文档中定义但我找不到它。 所以,我的问题是这两个术语的意思是什么以及它们如何相互区别。

Content-Length分隔邮件正文的过早结束(预期:

我试图在apache httpclient的帮助下获得HTTP响应。 我成功获得了标题但是当我尝试获取内容时它会引发exception。 例外情况是: org.apache.http.ConnectionClosedException: Premature end of Content-Length delimited message body (expected: 203856; received: 1070 at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:180) at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283) at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325) at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177) at java.io.InputStreamReader.read(InputStreamReader.java:184) at java.io.BufferedReader.fill(BufferedReader.java:154) at java.io.BufferedReader.readLine(BufferedReader.java:317) at java.io.BufferedReader.readLine(BufferedReader.java:382) 我的代码是: InputStream is = entity.getContent(); BufferedReader br = new BufferedReader( new InputStreamReader(is, “UTF-8”)); String line; String str = “”; while ((line = br.readLine()) […]

如何在Apache HttpClient中使用SSL客户端证书?

在Python中我使用了这样的请求: requests.put( webdavURL, auth=(tUsername, tPassword), data=webdavFpb, verify=False, cert=(“/path/to/file.pem”, “/path/to/file.key”)) 非常简单。 现在我需要使用Apache HttpClient在Java中实现相同的function。 在使用HttpClient发出请求时如何传递客户端证书?

尝试进行客户端服务器ssl身份validation时,Tomcat 7获取SSLv2Hello被禁用错误

我试图为客户端和服务器设置自签名TLS配置,其中服务器是Tomcat 7,客户端是Apache httpclient 4.1。 服务器配置取自此处 ,客户端代码取自此处 。 我的tomcat配置如下所示: 我的客户端代码如下所示: final HttpParams httpParams = new BasicHttpParams(); // load the keystore containing the client certificate – keystore type is probably jks or pkcs12 final KeyStore keystore = KeyStore.getInstance(“pkcs12”); FileInputStream keystoreInput = = new FileInputStream(“d:/dev/java/conf/keys/client.p12”);; // TODO get the keystore as an InputStream from somewhere keystore.load(keystoreInput, “password”.toCharArray()); // […]

使用RestTemplate进行基本身份validation(3.1)

我试图使用Java重现以下curl命令: curl -v -u user:pass http://myapp.com/api 此命令返回一些JSON数据。 我的错误Java实现如下: @Test public void callTest() { RestTemplate restTemplate = createRestTemplate(“user”, “pass”); URI uri = new URI(“http://myapp.com/api”); String res = restTemplate.getForObject(uri, String.class); } private static RestTemplate createRestTemplate(String username, String password) { UsernamePasswordCredentials cred = new UsernamePasswordCredentials(username, password); BasicCredentialsProvider cp = new BasicCredentialsProvider(); cp.setCredentials(AuthScope.ANY, cred); DefaultHttpClient client = new DefaultHttpClient(); […]

Apache PoolingHttpClientConnectionManager抛出非法状态exception

这是我如何使用它 – private static final PoolingHttpClientConnectionManager connPool; static { connPool = new PoolingHttpClientConnectionManager(); // Increase max total connection to 200 connPool.setMaxTotal(200);//configurable through app.properties // Increase default max connection per route to 50 connPool.setDefaultMaxPerRoute(20);//configurable through app.properties } CloseableHttpClient httpClient = HttpClients.custom() .setConnectionManager(connPool) .build(); 另外我在http GET周围放了一个finally块 – finally { try { httpClient.close(); } catch (IOException e) { […]

Apache 4.1 HttpClient POST和GET

任何人都可以提供一个如何使用GET和POST (Apache 4.1 HttpClient)的例子吗? 因为我发现的大部分示例都使用3.x