Living Vicariously: Using Proxy Servers with the Google Data API Client Libraries

Jeff Fisher, tim Google Data API
Juni 2007

Pengantar: Mengapa menggunakan proxy?

Server proxy adalah komputer (atau layanan di komputer) yang membuat permintaan untuk sejumlah komputer klien atas nama mereka, biasanya ke resource eksternal. Artikel ini membahas server proxy HTTP karena HTTP adalah protokol yang digunakan untuk mengakses API publik untuk layanan web Google. Dengan demikian, proxy HTTPS atau SSL juga menarik untuk digunakan saat membuat permintaan HTTP yang berisi informasi sensitif seperti data pribadi pengguna atau sandi. Saat ini, banyak perusahaan besar menggunakan proxy HTTP untuk mengontrol situs atau informasi apa yang dapat dilihat karyawan di internet. Perpustakaan umum dan sekolah juga diketahui menerapkan proxy untuk tujuan ini. Ada juga sejumlah server proxy yang tersedia secara publik yang dapat digunakan untuk mengakses konten web secara anonim.

Potensi masalah yang dihadapi saat menggunakan server proxy bergantung pada software yang digunakan dan cara konfigurasinya. Proxy dianggap "transparan" jika tidak mengubah permintaan dari klien atau respons dari server dengan cara apa pun selain yang diperlukan untuk identifikasi dan autentikasi proxy. Namun, sejumlah besar server proxy mengubah permintaan atau respons dengan cara yang harus diketahui oleh developer. Secara khusus, proxy tertentu akan mengubah jenis konten respons atau menghapus header keep-alive HTTP agar tidak dikirim ke server luar yang menghosting resource.

Jadi, mengapa developer ingin menggunakan proxy HTTP atau SSL? Secara umum, ada dua alasan untuk hal ini: diperlukan oleh beberapa infrastruktur perusahaan, atau developer ingin men-debug aplikasi yang menggunakan layanan web. Alasan pertama sama sekali tidak dapat dihindari jika aturan untuk jaringan yang digunakan developer melarang koneksi web atau SSL yang tidak di-proxy ke situs eksternal. Alasan terakhir sering dilaporkan di forum dukungan kami oleh developer yang mencoba memecahkan masalah saat berurusan dengan layanan web Google. Ada proxy "proses debug" khusus seperti Fiddler dan Charles yang ditujukan untuk situasi ini. Untuk mengetahui informasi selengkapnya tentang penggunaan server proxy ini, Anda dapat membaca artikel kami On the Wire: Tools for API Developers.

Untuk beberapa aplikasi, menambahkan dukungan server proxy bisa jadi sulit. Untungnya, sebagian besar library klien untuk Google Data API dapat dibuat agar berfungsi dengan server proxy HTTP setelah sedikit modifikasi kode. Artikel ini dimaksudkan sebagai titik awal bagi developer yang ingin menggunakan server proxy untuk permintaan web yang dibuat oleh aplikasinya.

Java

Menggunakan proxy HTTP dengan library klien Java sangat mudah berkat penggunaan properti sistem oleh Sun untuk mengelola setelan koneksi.

Misalnya, jika server proxy perusahaan Anda berjalan di "my.proxy.domain.com", di port 3128, Anda dapat menambahkan kode berikut ke kode Anda sebelum membuat objek layanan untuk Google Kalender, Google Spreadsheet, dll.

System.setProperty("http.proxyHost", "my.proxy.domain.com");
System.setProperty("http.proxyPort", "3128");

Atau, hal ini dapat dilakukan di command line saat memulai lingkungan servlet Anda:

java -Dhttp.proxyHost=my.proxy.domain.com -Dhttp.proxyPort=3128

Dengan paket JSSE versi yang lebih baru, hal ini juga dapat diperluas ke proxy SSL. Jika server proxy yang sama dalam contoh sebelumnya menjalankan proxy SSL di port 3129, kode yang diperlukan adalah:

System.setProperty("https.proxyHost", "my.proxy.domain.com");
System.setProperty("https.proxyPort", "3129");

Hal ini juga dapat dilakukan dari command line dengan cara yang sama seperti proxy HTTP.

Terkadang, Anda mungkin perlu memberikan kredensial ke server proxy agar dapat menggunakannya. Biasanya, hash tersebut dikirimkan menggunakan hash base64 yang disertakan dalam header HTTP, sebagai berikut:

String encoded = new String(Base64.encodeBase64(new String("username:password").getBytes()));
String base64encodedCredentials = "Basic " + encoded;
myService.getRequestFactory().setPrivateHeader("Proxy-Authorization", base64encodedCredentials);

Perhatikan bahwa kode di atas menggunakan paket Apache Commons Codec untuk melakukan encoding base64 yang diperlukan. Anda harus mengimpor class org.apache.commons.codec.binary.Base64 untuk menjalankan kode di atas.

.NET

Penggunaan proxy HTTP dengan library klien .NET tidak sesederhana dengan klien Java, tetapi dapat dilakukan dengan cara yang serupa saat membuat objek layanan untuk produk tertentu.

Misalnya, kita mungkin ingin menggunakan proxy untuk berinteraksi dengan layanan Google Kalender:

using System.Net;

CalendarService service = new CalendarService("CalendarSampleApp");
query.Uri = new Uri(calendarURI);
GDataRequestFactory requestFactory = (GDataRequestFactory) service.RequestFactory;
IWebProxy iProxy = WebRequest.DefaultWebProxy;
WebProxy myProxy = new WebProxy(iProxy.GetProxy(query.Uri));
// potentially, setup credentials on the proxy here
myProxy.Credentials = CredentialCache.DefaultCredentials;
myProxy.UseDefaultCredentials = true;
requestFactory.Proxy = myProxy;

Ini akan mendeteksi proxy yang diperlukan dari setelan koneksi Internet Anda--fitur bagus dari library .NET. Namun, jika Anda tidak memercayainya untuk menemukan proxy dengan benar, Anda juga dapat menyetelnya dengan mengubah kode menjadi:

using System.Net;

CalendarService service = new CalendarService("CalendarSampleApp");
GDataRequestFactory requestFactory = (GDataRequestFactory) service.RequestFactory;
WebProxy myProxy = new WebProxy("http://my.proxy.example.com:3128/",true);
// potentially, setup credentials on the proxy here
myProxy.Credentials = CredentialCache.DefaultCredentials;
myProxy.UseDefaultCredentials = true;
requestFactory.Proxy = myProxy;

Kesimpulan

Artikel ini telah membahas cara membuat beberapa library klien Google Data API bekerja dengan server proxy HTTP. Developer yang bekerja di belakang server proxy yang diwajibkan oleh kebijakan jaringan tetap dapat menggunakan library ini. Developer juga dapat menggunakan server proxy untuk membantu men-debug kode mereka dengan membuat server proxy merekam konten permintaan dan respons HTTP yang dikirim ke dan dari layanan web Google. Ada kasus penggunaan server proxy dan library klien lainnya yang lebih canggih yang tidak dibahas dalam tutorial ini. Developer yang memerlukan bantuan tambahan dianjurkan untuk berpartisipasi dalam grup dukungan publik kami yang ditautkan di bawah.

Untuk informasi tambahan tentang library klien yang digunakan dalam artikel ini, buka halaman berikut:

Referensi Lainnya: