随分と前にGAE/J の Urlフェッチについて書きましたが、
今回は、Basic認証のページをフェッチする機会があったのでメモっておきます。
Low Level API で urlFetch しました。
こんな感じです。
URL fetchurl = new URL("http://somewhere.to.see/"); HTTPRequest request = new HTTPRequest(fetchurl); String authStr = "Basic " + Base64.encode((name+":"+pass).getBytes()); request.addHeader(new HTTPHeader("Authorization", authStr)); HTTPResponse res = URLFetchServiceFactory.getURLFetchService().fetch(request); String body = new String(res.getContent(), encoding);
Base64のエンコーディングは、Web上のサンプルとかでは
import com.google.appengine.repackaged.com.google.common.util.Base64;
となっている例が多いですが、eclipse上で怒られます。
なのでBase64クラスをeclipse で Ctrl+Shift+Oして適当に見繕ったものを使いました。
org.apache.xerces.impl.dv.util.Base64
とか
com.sun.org.apache.xml.internal.security.utils.Base64
とか。
参考にさせて頂いたサイト達
java.net の使用 – Google App Engine — Google Developers
java – Using HTTP Basic-Auth with Google App Engine URLFetch service – Stack Overflow