将 HTTP Basic-Auth 与 Google App Engine URLFetch 服务配合使用

如何指定用户名和密码,以便使用 App Engine 的 URLFetch 服务(Java)发出 Basic-Auth 请求?

看来我可以设置HTTP标头:

URL url = new URL("http://www.example.com/comment");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("X-MyApp-Version", "2.7.3");        

基本身份验证的适当标头是什么?


答案 1

这是基于 http 的基本身份验证标头:

授权:基本 base64 编码(用户名:密码)

例如:

GET /private/index.html HTTP/1.0
Host: myhost.com
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

您将需要执行以下操作:

URL url = new URL("http://www.example.com/comment");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("Authorization",
"Basic "+codec.encodeBase64String(("username:password").getBytes());

要做到这一点,你需要得到一个base64编解码器API,就像Apache Commons编解码器一样。


答案 2

对于那些有兴趣在Python中执行此操作的人(就像我一样),代码看起来像这样:

result = urlfetch.fetch("http://www.example.com/comment",
                        headers={"Authorization": 
                                 "Basic %s" % base64.b64encode("username:pass")})

推荐