Hidup dengan Buruk: Menggunakan Server Proxy dengan Library Klien Google Data API

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 berkaitan dengan server proxy HTTP karena HTTP adalah protokol yang digunakan untuk mengakses API publik untuk layanan web Google. Dengan demikian, proxy HTTPS atau SSL juga penting saat membuat permintaan HTTP yang berisi informasi sensitif seperti data pengguna pribadi atau sandi. Banyak perusahaan besar saat ini menggunakan proxy HTTP untuk mengontrol situs atau informasi yang dapat dilihat karyawan di internet. Library publik dan sekolah juga telah diketahui menerapkan proxy untuk tujuan ini. Ada juga sejumlah server proxy yang tersedia untuk publik yang dapat digunakan untuk mengakses konten web secara anonim.

Potensi masalah yang dihadapi saat menggunakan server proxy bergantung pada perangkat lunak yang digunakan dan cara mengonfigurasinya. 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 dapat mengubah permintaan atau respons dengan cara yang harus diperhatikan 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 sepenuhnya tidak dapat dihindari jika aturan untuk jaringan developer sedang melarang koneksi web atau SSL yang tidak di-proxy-kan ke situs eksternal. Alasan yang terakhir sering dilaporkan di forum dukungan kami oleh developer yang mencoba memecahkan masalah saat menangani layanan web Google. Ada proxy "proses debug" tujuan khusus seperti Fiddler dan Charles yang ditujukan untuk situasi yang tepat ini. Untuk informasi selengkapnya tentang penggunaan server proxy ini, Anda dapat membaca artikel kami Tentang Wire: Alat untuk Developer API.

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

Java

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

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

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

Atau, Anda dapat melakukannya pada command line saat memulai lingkungan servlet:

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

Dengan versi paket JSSE yang lebih baru, paket ini juga dapat diperluas ke proxy SSL. Jika server proxy yang sama pada contoh sebelumnya menjalankan proxy SSL pada 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 untuk menggunakannya. Biasanya, kueri dikirimkan menggunakan hash base64 yang disertakan dalam header HTTP, seperti 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 agar dapat melakukan encoding base64. Anda harus mengimpor class org.apache.commons.codec.binary.Base64 untuk menjalankan kode di atas.

.NET

Menggunakan proxy HTTP dengan library klien .NET tidaklah sesederhana klien Java, tetapi dapat dilakukan dengan cara yang sama 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;

Tindakan ini akan mendeteksi proxy yang diperlukan dari setelan koneksi Internet Anda--fitur yang bagus dari library .NET. Namun, jika 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 kerja beberapa library klien Google Data API dengan server proxy HTTP. Developer yang bekerja di balik server proxy yang dimandatkan oleh kebijakan jaringan masih dapat menggunakan library tersebut. Developer juga dapat menggunakan server proxy untuk membantu men-debug kode dengan meminta server proxy mencatat konten permintaan dan respons HTTP yang dikirim ke dan dari layanan web Google. Terdapat kasus penggunaan lanjutan untuk server proxy dan library klien lainnya yang tidak tercakup dalam tutorial ini. Developer yang membutuhkan bantuan tambahan sebaiknya 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: