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

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

报告相同问题?

悬赏问题

  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类