看到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编码方式不了解,恳请熟悉的帮忙分析一下
首先向大家道个谦:
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")
);
也通不过 提示:
<div style="padding:10px 10px">
<p>您可能使用了网络爬虫抓取JavaEye网站页面!</p>
<p>JavaEye网站不允许您使用网络爬虫对JavaEye进行恶意的网页抓取,请您立刻停止该抓取行为!</p>
<p>如果您的网络爬虫不属于恶意抓取行为,希望JavaEye网站允许你进行网页抓取,请和JavaEye管理员联系,取得授权: webmaster AT javaeye DOT com</p>
<p>如果您确实使用浏览器访问,但是被错误的识别为网络爬虫,希望将您浏览器发送的“User Agent”信息告知我们,帮助我们解决错误: webmaster AT javaeye DOT com</p>
</div>
只有当把验证串放在header中才能通过
我对httpclient的验证了解不多,恳请高手帮我分析一下
分享到:
相关推荐
3. **构建HttpGet请求**:使用`HttpGet`类创建一个GET请求,设置目标URL为JavaEye API的验证接口。例如: ```java HttpGet httpGet = new HttpGet("http://api.javaeye.com/user/validate"); ``` 4. **添加请求...
JavaEye的API使用帮助是一个针对JavaEye开发框架的详细指南,旨在帮助开发者更好地理解和应用这个框架。这个压缩包包含了三个文件:一个PDF文档,一个TXT文本文件,以及一个URL链接。接下来,我们将深入探讨JavaEye ...
JavaEye API 的简单封装主要基于 Java 的 HttpClient 库,提供了更方便、易用的接口来执行 HTTP 请求。HttpClient 是一个成熟的 Java 库,用于执行 HTTP 协议的客户端请求,而 JavaEyeClient 则是对这个库进行了一层...
javaeye被黑 大家看看
NULL 博文链接:https://ago520.iteye.com/blog/754087
JavaEye热点阅读是JavaEye论坛推出的2009年2月特辑,旨在为Java学习者和开发者提供最新的知识及行业动态。这份资料包含了多个Java相关的主题,包括但不限于并发编程、开源项目、设计模式、框架应用以及软件开发实践...
JavaEye+技术架构,讲述java框架的应用
- **网址**:http://www.railsbrain.com/api/rails-1.2.3/doc/index.html - **特点**:提供了详尽的Rails文档,便于开发者查询和学习。 #### 六、调试器 虽然Ruby是一种动态语言,但它同样支持高效的调试功能。...
javaeye的信息提示框代码之css,application.js
### Android中文API合集知识点概览 #### 一、引言 随着移动互联网的发展,Android作为全球最大的移动操作系统之一,在开发者社区中占据了重要的地位。为了帮助开发者更好地理解和使用Android的各种功能,Google提供...
5. **网络通信**:许多应用需要与服务器进行数据交换,JavaEye客户端可能使用了HTTP/HTTPS请求,可能通过Android的HttpURLConnection或者第三方库如OkHttp、Retrofit等实现。此外,可能涉及到JSON或XML数据解析,如...
JavaEye客户端代码中,开发者可以了解到如何使用Java的HttpURLConnection或者Apache HttpClient库来创建HTTP请求,设置请求头,指定HTTP方法(GET、POST等),以及处理响应状态码和响应体。 1. HttpURLConnection...
NULL 博文链接:https://ago520.iteye.com/blog/814571
JavaEye新闻月刊2009年3月第13期内容涉及了当时软件开发领域内的一系列重要话题,包括IBM拟收购Sun Microsystems公司的新闻报道、Java社区对此的看法以及各种编程语言、开发工具和技术的新动态。 首先,新闻月刊...
这类工具通常会提供详细的使用指南和API参考,帮助开发者理解和使用验证功能。 结合以上信息,我们可以假设这篇博客可能讨论了以下几点: 1. **JavaEye社区回顾**:作者可能会分享自己在JavaEye社区的经历,讲述...
javaeye 论坛小测试 javaeye论坛小测试答案 javaeye论坛测试答案 这下你们就省事了。