.class public Lorg/apache/http/impl/execchain/ProtocolExec; .super Ljava/lang/Object; .source "ProtocolExec.java" # interfaces .implements Lorg/apache/http/impl/execchain/ClientExecChain; # instance fields .field private final httpProcessor:Lorg/apache/http/protocol/HttpProcessor; .field private final log:Lorg/apache/commons/logging/Log; .field private final requestExecutor:Lorg/apache/http/impl/execchain/ClientExecChain; # direct methods .method public constructor (Lorg/apache/http/impl/execchain/ClientExecChain;Lorg/apache/http/protocol/HttpProcessor;)V .registers 4 .line 82 invoke-direct {p0}, Ljava/lang/Object;->()V .line 77 invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class; move-result-object v0 invoke-static {v0}, Lorg/apache/commons/logging/LogFactory;->getLog(Ljava/lang/Class;)Lorg/apache/commons/logging/Log; move-result-object v0 iput-object v0, p0, Lorg/apache/http/impl/execchain/ProtocolExec;->log:Lorg/apache/commons/logging/Log; .line 83 const-string v0, "HTTP client request executor" invoke-static {p1, v0}, Lorg/apache/http/util/Args;->notNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; .line 84 const-string v0, "HTTP protocol processor" invoke-static {p2, v0}, Lorg/apache/http/util/Args;->notNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; .line 85 iput-object p1, p0, Lorg/apache/http/impl/execchain/ProtocolExec;->requestExecutor:Lorg/apache/http/impl/execchain/ClientExecChain; .line 86 iput-object p2, p0, Lorg/apache/http/impl/execchain/ProtocolExec;->httpProcessor:Lorg/apache/http/protocol/HttpProcessor; return-void .end method # virtual methods .method public execute(Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/client/methods/HttpRequestWrapper;Lorg/apache/http/client/protocol/HttpClientContext;Lorg/apache/http/client/methods/HttpExecutionAware;)Lorg/apache/http/client/methods/CloseableHttpResponse; .registers 11 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException;, Lorg/apache/http/HttpException; } .end annotation .line 109 const-string v0, "HTTP route" invoke-static {p1, v0}, Lorg/apache/http/util/Args;->notNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; .line 110 const-string v0, "HTTP request" invoke-static {p2, v0}, Lorg/apache/http/util/Args;->notNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; .line 111 const-string v0, "HTTP context" invoke-static {p3, v0}, Lorg/apache/http/util/Args;->notNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; .line 113 invoke-virtual {p2}, Lorg/apache/http/client/methods/HttpRequestWrapper;->getOriginal()Lorg/apache/http/HttpRequest; move-result-object v0 .line 115 instance-of v1, v0, Lorg/apache/http/client/methods/HttpUriRequest; const/4 v2, 0x0 if-eqz v1, :cond_1f .line 116 check-cast v0, Lorg/apache/http/client/methods/HttpUriRequest; invoke-interface {v0}, Lorg/apache/http/client/methods/HttpUriRequest;->getURI()Ljava/net/URI; move-result-object v0 goto :goto_50 .line 118 :cond_1f invoke-interface {v0}, Lorg/apache/http/HttpRequest;->getRequestLine()Lorg/apache/http/RequestLine; move-result-object v0 invoke-interface {v0}, Lorg/apache/http/RequestLine;->getUri()Ljava/lang/String; move-result-object v0 .line 120 :try_start_27 invoke-static {v0}, Ljava/net/URI;->create(Ljava/lang/String;)Ljava/net/URI; move-result-object v0 :try_end_2b .catch Ljava/lang/IllegalArgumentException; {:try_start_27 .. :try_end_2b} :catch_2c goto :goto_50 :catch_2c move-exception v1 .line 122 iget-object v3, p0, Lorg/apache/http/impl/execchain/ProtocolExec;->log:Lorg/apache/commons/logging/Log; invoke-interface {v3}, Lorg/apache/commons/logging/Log;->isDebugEnabled()Z move-result v3 if-eqz v3, :cond_4f .line 123 iget-object v3, p0, Lorg/apache/http/impl/execchain/ProtocolExec;->log:Lorg/apache/commons/logging/Log; new-instance v4, Ljava/lang/StringBuilder; const-string v5, "Unable to parse \'" invoke-direct {v4, v5}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 const-string v4, "\' as a valid URI; request URI and Host header may be inconsistent" invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-interface {v3, v0, v1}, Lorg/apache/commons/logging/Log;->debug(Ljava/lang/Object;Ljava/lang/Throwable;)V :cond_4f move-object v0, v2 .line 129 :goto_50 invoke-virtual {p2, v0}, Lorg/apache/http/client/methods/HttpRequestWrapper;->setURI(Ljava/net/URI;)V .line 132 invoke-virtual {p0, p2, p1}, Lorg/apache/http/impl/execchain/ProtocolExec;->rewriteRequestURI(Lorg/apache/http/client/methods/HttpRequestWrapper;Lorg/apache/http/conn/routing/HttpRoute;)V .line 134 invoke-virtual {p2}, Lorg/apache/http/client/methods/HttpRequestWrapper;->getParams()Lorg/apache/http/params/HttpParams; move-result-object v1 .line 135 const-string v3, "http.virtual-host" invoke-interface {v1, v3}, Lorg/apache/http/params/HttpParams;->getParameter(Ljava/lang/String;)Ljava/lang/Object; move-result-object v1 check-cast v1, Lorg/apache/http/HttpHost; if-eqz v1, :cond_9f .line 137 invoke-virtual {v1}, Lorg/apache/http/HttpHost;->getPort()I move-result v3 const/4 v4, -0x1 if-ne v3, v4, :cond_9f .line 138 invoke-virtual {p1}, Lorg/apache/http/conn/routing/HttpRoute;->getTargetHost()Lorg/apache/http/HttpHost; move-result-object v3 invoke-virtual {v3}, Lorg/apache/http/HttpHost;->getPort()I move-result v3 if-eq v3, v4, :cond_83 .line 140 new-instance v4, Lorg/apache/http/HttpHost; invoke-virtual {v1}, Lorg/apache/http/HttpHost;->getHostName()Ljava/lang/String; move-result-object v5 invoke-virtual {v1}, Lorg/apache/http/HttpHost;->getSchemeName()Ljava/lang/String; move-result-object v1 invoke-direct {v4, v5, v3, v1}, Lorg/apache/http/HttpHost;->(Ljava/lang/String;ILjava/lang/String;)V move-object v1, v4 .line 143 :cond_83 iget-object v3, p0, Lorg/apache/http/impl/execchain/ProtocolExec;->log:Lorg/apache/commons/logging/Log; invoke-interface {v3}, Lorg/apache/commons/logging/Log;->isDebugEnabled()Z move-result v3 if-eqz v3, :cond_9f .line 144 iget-object v3, p0, Lorg/apache/http/impl/execchain/ProtocolExec;->log:Lorg/apache/commons/logging/Log; new-instance v4, Ljava/lang/StringBuilder; const-string v5, "Using virtual host" invoke-direct {v4, v5}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; move-result-object v4 invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v4 invoke-interface {v3, v4}, Lorg/apache/commons/logging/Log;->debug(Ljava/lang/Object;)V :cond_9f if-eqz v1, :cond_a3 move-object v2, v1 goto :goto_c2 :cond_a3 if-eqz v0, :cond_c2 .line 152 invoke-virtual {v0}, Ljava/net/URI;->isAbsolute()Z move-result v1 if-eqz v1, :cond_c2 invoke-virtual {v0}, Ljava/net/URI;->getHost()Ljava/lang/String; move-result-object v1 if-eqz v1, :cond_c2 .line 153 new-instance v2, Lorg/apache/http/HttpHost; invoke-virtual {v0}, Ljava/net/URI;->getHost()Ljava/lang/String; move-result-object v1 invoke-virtual {v0}, Ljava/net/URI;->getPort()I move-result v3 invoke-virtual {v0}, Ljava/net/URI;->getScheme()Ljava/lang/String; move-result-object v4 invoke-direct {v2, v1, v3, v4}, Lorg/apache/http/HttpHost;->(Ljava/lang/String;ILjava/lang/String;)V :cond_c2 :goto_c2 if-nez v2, :cond_c8 .line 157 invoke-virtual {p2}, Lorg/apache/http/client/methods/HttpRequestWrapper;->getTarget()Lorg/apache/http/HttpHost; move-result-object v2 :cond_c8 if-nez v2, :cond_ce .line 160 invoke-virtual {p1}, Lorg/apache/http/conn/routing/HttpRoute;->getTargetHost()Lorg/apache/http/HttpHost; move-result-object v2 :cond_ce if-eqz v0, :cond_f1 .line 165 invoke-virtual {v0}, Ljava/net/URI;->getUserInfo()Ljava/lang/String; move-result-object v0 if-eqz v0, :cond_f1 .line 167 invoke-virtual {p3}, Lorg/apache/http/client/protocol/HttpClientContext;->getCredentialsProvider()Lorg/apache/http/client/CredentialsProvider; move-result-object v1 if-nez v1, :cond_e4 .line 169 new-instance v1, Lorg/apache/http/impl/client/BasicCredentialsProvider; invoke-direct {v1}, Lorg/apache/http/impl/client/BasicCredentialsProvider;->()V .line 170 invoke-virtual {p3, v1}, Lorg/apache/http/client/protocol/HttpClientContext;->setCredentialsProvider(Lorg/apache/http/client/CredentialsProvider;)V .line 172 :cond_e4 new-instance v3, Lorg/apache/http/auth/AuthScope; invoke-direct {v3, v2}, Lorg/apache/http/auth/AuthScope;->(Lorg/apache/http/HttpHost;)V new-instance v4, Lorg/apache/http/auth/UsernamePasswordCredentials; invoke-direct {v4, v0}, Lorg/apache/http/auth/UsernamePasswordCredentials;->(Ljava/lang/String;)V invoke-interface {v1, v3, v4}, Lorg/apache/http/client/CredentialsProvider;->setCredentials(Lorg/apache/http/auth/AuthScope;Lorg/apache/http/auth/Credentials;)V .line 179 :cond_f1 const-string v0, "http.target_host" invoke-virtual {p3, v0, v2}, Lorg/apache/http/client/protocol/HttpClientContext;->setAttribute(Ljava/lang/String;Ljava/lang/Object;)V .line 180 const-string v0, "http.route" invoke-virtual {p3, v0, p1}, Lorg/apache/http/client/protocol/HttpClientContext;->setAttribute(Ljava/lang/String;Ljava/lang/Object;)V .line 181 const-string v0, "http.request" invoke-virtual {p3, v0, p2}, Lorg/apache/http/client/protocol/HttpClientContext;->setAttribute(Ljava/lang/String;Ljava/lang/Object;)V .line 183 iget-object v0, p0, Lorg/apache/http/impl/execchain/ProtocolExec;->httpProcessor:Lorg/apache/http/protocol/HttpProcessor; invoke-interface {v0, p2, p3}, Lorg/apache/http/protocol/HttpProcessor;->process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V .line 185 iget-object v0, p0, Lorg/apache/http/impl/execchain/ProtocolExec;->requestExecutor:Lorg/apache/http/impl/execchain/ClientExecChain; invoke-interface {v0, p1, p2, p3, p4}, Lorg/apache/http/impl/execchain/ClientExecChain;->execute(Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/client/methods/HttpRequestWrapper;Lorg/apache/http/client/protocol/HttpClientContext;Lorg/apache/http/client/methods/HttpExecutionAware;)Lorg/apache/http/client/methods/CloseableHttpResponse; move-result-object p1 .line 189 :try_start_10b const-string p2, "http.response" invoke-virtual {p3, p2, p1}, Lorg/apache/http/client/protocol/HttpClientContext;->setAttribute(Ljava/lang/String;Ljava/lang/Object;)V .line 190 iget-object p2, p0, Lorg/apache/http/impl/execchain/ProtocolExec;->httpProcessor:Lorg/apache/http/protocol/HttpProcessor; invoke-interface {p2, p1, p3}, Lorg/apache/http/protocol/HttpProcessor;->process(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V :try_end_115 .catch Ljava/lang/RuntimeException; {:try_start_10b .. :try_end_115} :catch_120 .catch Ljava/io/IOException; {:try_start_10b .. :try_end_115} :catch_11b .catch Lorg/apache/http/HttpException; {:try_start_10b .. :try_end_115} :catch_116 return-object p1 :catch_116 move-exception p2 .line 199 invoke-interface {p1}, Lorg/apache/http/client/methods/CloseableHttpResponse;->close()V .line 200 throw p2 :catch_11b move-exception p2 .line 196 invoke-interface {p1}, Lorg/apache/http/client/methods/CloseableHttpResponse;->close()V .line 197 throw p2 :catch_120 move-exception p2 .line 193 invoke-interface {p1}, Lorg/apache/http/client/methods/CloseableHttpResponse;->close()V .line 194 throw p2 .end method .method rewriteRequestURI(Lorg/apache/http/client/methods/HttpRequestWrapper;Lorg/apache/http/conn/routing/HttpRoute;)V .registers 6 .annotation system Ldalvik/annotation/Throws; value = { Lorg/apache/http/ProtocolException; } .end annotation .line 92 invoke-virtual {p1}, Lorg/apache/http/client/methods/HttpRequestWrapper;->getURI()Ljava/net/URI; move-result-object v0 if-eqz v0, :cond_24 .line 95 :try_start_6 invoke-static {v0, p2}, Lorg/apache/http/client/utils/URIUtils;->rewriteURIForRoute(Ljava/net/URI;Lorg/apache/http/conn/routing/RouteInfo;)Ljava/net/URI; move-result-object p2 invoke-virtual {p1, p2}, Lorg/apache/http/client/methods/HttpRequestWrapper;->setURI(Ljava/net/URI;)V :try_end_d .catch Ljava/net/URISyntaxException; {:try_start_6 .. :try_end_d} :catch_e goto :goto_24 :catch_e move-exception p1 .line 97 new-instance p2, Lorg/apache/http/ProtocolException; new-instance v1, Ljava/lang/StringBuilder; const-string v2, "Invalid URI: " invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-direct {p2, v0, p1}, Lorg/apache/http/ProtocolException;->(Ljava/lang/String;Ljava/lang/Throwable;)V throw p2 :cond_24 :goto_24 return-void .end method