tianshilang 2009-03-05 22:25
浏览 197
已采纳

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验证,而程序死活儿不能通过验证,太奇怪了!

http://ssword.yo2.cn/2009/01/29/ruby%E4%BD%BF%E7%94%A8open-uri%E5%81%9Ahttp-basic%E9%AA%8C%E8%AF%81/中看到ruby的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编码方式不了解,恳请熟悉的帮忙分析一下


问题补充:
谢谢block!
向广大javaeyer道个歉
是我粗心 后来发现是 ruby和java获取的BASE64编码串是一样的!
特此问题关闭
  • 写回答

1条回答 默认 最新

  • iteye_17981 2009-03-18 16:40
    关注

    尝试一下这个类:java.util.prefs.Base64

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能