java basic验证_Javaeye API的Http basic验证

看到fins大牛写的JE talker以后,很有冲动自己也来写一下。我的UI设计还很差,还是先实现命令行的吧!

我是采用HttpClient模拟get请求来获取数据,再用jsonlib解析数据。

开始以为不难实现,不料开始就给我来了一个下马威!Http验证通不过,java eye api 验证采用的是HTTP Basic  Access Authentication,最常用也是最简单的http验证。通过wiki查看了一下原来就是把"username:password"经过Base64加密后,放在header中。当服务器接受请求后,再利用Base64Decode进行验证,不成功则返回httpcode为401。开始我怀疑是不是httpclient采用是不是basic验证。通过查看文档以后,httpclient默认优先采用basic验证。javaeye采用的是basic验证,http优先使用的也是basic验证,而程序死活儿不能通过验证,太奇怪了!

require 'open-uri'

require 'base64'

f = open(url,"Authorization"=>"Basic #{Base64.b64encode("myaccount:mypassword")}")

puts f.read

原来的 写道

我自己试了一把,成功通过验证。借鉴网友的思路我把httpclient的basic验证也采用自己用Base64编码后方法放在header中还是通不过,后来发现原来apache的Base64算法和ruby的BASE64模块提供的算法不同,生成的串不同。

我对Base64编码方式不了解,恳请熟悉的帮忙分析一下

首先向大家道个谦:

java和ruby的BASE64编码算法得到的结果是一样的

现在的问题是这样的:

DefaultHttpClient httpclient = new DefaultHttpClient();

httpclient.getCredentialsProvider().setCredentials(

AuthScope.ANY,

new UsernamePasswordCredentials("user", "password"));

// CredentialsProvider provider = new BasicCredentialsProvider();

// provider.setCredentials(new AuthScope("http://api.iteye.com/api/twitters/replies",80), new UsernamePasswordCredentials("user:password"));

HttpGet httpget = new HttpGet("http://api.iteye.com/api/twitters/replies");

这样是通不过验证的

提示:

警告: Authentication error: Unable to respond to any of these challenges: {}

----------------------------------------

HTTP/1.1 401 Unauthorized

Response content length: 15

采用httpclient3

client.getState().setCredentials(

AuthScope.ANY,

new UsernamePasswordCredentials("user", "password")

);

也通不过  提示:

您可能使用了网络爬虫抓取JavaEye网站页面!

JavaEye网站不允许您使用网络爬虫对JavaEye进行恶意的网页抓取,请您立刻停止该抓取行为!

如果您的网络爬虫不属于恶意抓取行为,希望JavaEye网站允许你进行网页抓取,请和JavaEye管理员联系,取得授权: webmaster AT javaeye DOT com

如果您确实使用浏览器访问,但是被错误的识别为网络爬虫,希望将您浏览器发送的“User Agent”信息告知我们,帮助我们解决错误: webmaster AT javaeye DOT com

只有当把验证串放在header中才能通过

我对httpclient的验证了解不多,恳请高手帮我分析一下

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2009-03-05 17:45

浏览 4478

评论

3 楼

VcStrong

2013-07-24

解决了吗?求大神辅导。验证不通过,该怎么改,难道把用户名和密码也用addheader()添加到header中吗

2 楼

xiaoZ5919

2009-03-06

QuakeWang 写道

httpclient basic 认证的代码:http://svn.apache.org/viewvc/httpcomponents/oac.hc3x/trunk/src/examples/BasicAuthenticationExample.java?view=markup

恩 这段代码 我以前看过

首先向大家道个歉

不是Base64算法的问题

java和ruby获取的编码串是一样的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值