Google Cloud library klien menggunakan HTTPS dan gRPC dalam komunikasi yang mendasarinya
dengan layanan. Dalam kedua protokol, Anda dapat mengonfigurasi proxy menggunakan
properti https.proxyHost dan, secara opsional, https.proxyPort.
Mengonfigurasi proxy dengan HTTP
Untuk klien HTTP, Anda dapat mengonfigurasi proxy dasar menggunakan http.proxyHost dan properti sistem terkait, seperti yang didokumentasikan oleh Java Networking and Proxies.
Untuk proxy kustom (misalnya, proxy yang diautentikasi), berikan
HttpTransportFactory kustom ke GoogleCredentials:
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.apache.v2.ApacheHttpTransport;
import com.google.auth.http.HttpTransportFactory;
import com.google.auth.oauth2.GoogleCredentials;
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.HttpClient;
import org.apache.http.conn.routing.HttpRoutePlanner;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.ProxyAuthenticationStrategy;
import org.apache.http.impl.conn.DefaultProxyRoutePlanner;
import java.io.IOException;
public class ProxyExample {
public GoogleCredentials getCredentials() throws IOException {
HttpTransportFactory httpTransportFactory = getHttpTransportFactory(
"some-host", 8080, "some-username", "some-password"
);
return GoogleCredentials.getApplicationDefault(httpTransportFactory);
}
public HttpTransportFactory getHttpTransportFactory(String proxyHost, int proxyPort, String proxyUsername, String proxyPassword) {
HttpHost proxyHostDetails = new HttpHost(proxyHost, proxyPort);
HttpRoutePlanner httpRoutePlanner = new DefaultProxyRoutePlanner(proxyHostDetails);
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(
new AuthScope(proxyHostDetails.getHostName(), proxyHostDetails.getPort()),
new UsernamePasswordCredentials(proxyUsername, proxyPassword)
);
HttpClient httpClient = ApacheHttpTransport.newDefaultHttpClientBuilder()
.setRoutePlanner(httpRoutePlanner)
.setProxyAuthenticationStrategy(ProxyAuthenticationStrategy.INSTANCE)
.setDefaultCredentialsProvider(credentialsProvider)
.build();
final HttpTransport httpTransport = new ApacheHttpTransport(httpClient);
return new HttpTransportFactory() {
@Override
public HttpTransport create() {
return httpTransport;
}
};
}
}
Contoh sebelumnya memerlukan com.google.http-client:google-http-client-apache-v2.
Mengonfigurasi proxy dengan konfigurasi proxy kustom gRPC
Untuk proxy kustom dengan gRPC, berikan ProxyDetector ke
ManagedChannelBuilder:
Ganti PROXY_USERNAME, PROXY_PASSWORD, PROXY_HOST, dan PROXY_PORT
dengan kredensial dan alamat proxy Anda.
import com.google.api.core.ApiFunction;
import com.google.api.gax.rpc.TransportChannelProvider;
import com.google.cloud.tasks.v2.CloudTasksClient;
import com.google.cloud.tasks.v2.CloudTasksSettings;
import com.google.cloud.tasks.v2.stub.CloudTasksStubSettings;
import io.grpc.HttpConnectProxiedSocketAddress;
import io.grpc.ManagedChannelBuilder;
import