`

javaeye api [java httpclient版] 简单封装

阅读更多
java 使用 httpclient 调用 javaeyeapi
------------------------------------------------------------

package com.javaeye.client;

import java.io.IOException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpException;
import org.apache.http.HttpHost;
import org.apache.http.HttpRequest;
import org.apache.http.HttpRequestInterceptor;
import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScheme;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.AuthState;
import org.apache.http.auth.Credentials;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.protocol.ClientContext;
import org.apache.http.impl.auth.BasicScheme;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.ExecutionContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;

public class ClientUtils {
	/**
	 * 
	 * @param hostUrl 要请求的host name  如:http://api.iteye.com/api/twitters/list -> api.iteye.com
	 * @param getUrl  要请求的get url 	 如:http://api.iteye.com/api/twitters/list -> api/twitters/list
	 * @param userName	username
	 * @param password	password
	 * @return javaeye api 返回的son字符串
	 * @throws IOException 
	 * @throws ClientProtocolException 
	 */
	public static String getJsonContent(String hostUrl,String getUrl,String userName,String password) throws ClientProtocolException, IOException
	{
		String jsonStr="";
		
		DefaultHttpClient httpclient = new DefaultHttpClient();

        httpclient.getCredentialsProvider().setCredentials(
                new AuthScope(hostUrl, 80), 
                new UsernamePasswordCredentials(userName, password));

        BasicHttpContext localcontext = new BasicHttpContext();

        BasicScheme basicAuth = new BasicScheme();
        localcontext.setAttribute("preemptive-auth", basicAuth);
        
        httpclient.addRequestInterceptor((HttpRequestInterceptor) new PreemptiveAuth(), 0);
         
        HttpHost targetHost = new HttpHost(hostUrl);

        HttpGet httpget = new HttpGet("/" + getUrl);
        
        HttpResponse response = httpclient.execute(targetHost, httpget, localcontext);
        HttpEntity entity = response.getEntity();

        if (entity != null) {            
            jsonStr = EntityUtils.toString(entity);
            
            //System.out.println(jsonStr);            
            entity.consumeContent();
        }
                
        httpclient.getConnectionManager().shutdown(); 
		
		return jsonStr;
	}
	
	static class PreemptiveAuth implements HttpRequestInterceptor {

        public void process(
                final HttpRequest request, 
                final HttpContext context) throws HttpException, IOException {
            
            AuthState authState = (AuthState) context.getAttribute(
                    ClientContext.TARGET_AUTH_STATE);
            
            // If no auth scheme avaialble yet, try to initialize it preemptively
            if (authState.getAuthScheme() == null) {
                AuthScheme authScheme = (AuthScheme) context.getAttribute(
                        "preemptive-auth");
                CredentialsProvider credsProvider = (CredentialsProvider) context.getAttribute(
                        ClientContext.CREDS_PROVIDER);
                HttpHost targetHost = (HttpHost) context.getAttribute(
                        ExecutionContext.HTTP_TARGET_HOST);
                if (authScheme != null) {
                    Credentials creds = credsProvider.getCredentials(
                            new AuthScope(
                                    targetHost.getHostName(), 
                                    targetHost.getPort()));
                    if (creds == null) {
                        throw new HttpException("No credentials for preemptive authentication");
                    }
                    authState.setAuthScheme(authScheme);
                    authState.setCredentials(creds);
                }
            }
            
        }
        
    }
}



/******************************************************************/
test
package com.javaeye.client;

import java.io.IOException;

import org.apache.http.client.ClientProtocolException;

public class TestClientUtils {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str=null;
		try {
			str = ClientUtils.getJsonContent("api.iteye.com", "api/twitters/list", "msnvip", "×××××");
		} catch (ClientProtocolException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println(str);
	}

}



我还是抛砖;请有时间的同学继续深度挖掘;
附件一:eclipse中 简单封装的源代码
附件二:httpclient4.02
1
0
分享到:
评论

相关推荐

    httpClient调用javaeye API验证用户

    在这个场景中,我们使用HttpClient来调用JavaEye API来验证用户。JavaEye可能是一个提供用户认证服务的平台,而API则提供了验证用户身份的功能。 以下是一个关于如何使用HttpClient调用JavaEye API的基本步骤: 1....

    JavaEye的API使用帮助.rar

    JavaEye API是为Java开发者设计的一套接口,提供了丰富的功能,包括但不限于数据库操作、缓存管理、安全管理、视图渲染等。这些API简化了开发流程,提高了开发效率,并且通常具有良好的可扩展性和灵活性。 2. **...

    JavaEye+技术架构

    JavaEye+技术架构,讲述java框架的应用

    java常用函数API经常用的

    在Java编程语言中,函数API(Application Programming Interface)是一组预先定义的方法,允许开发者执行特定任务,如数据处理、输入/输出操作等。本篇文章将深入探讨Java中一些常用的函数API,尤其是那些在日常开发...

    基于JavaEye-API实现的Gerry-聊天QQ版v1.0 (全)

    NULL 博文链接:https://ago520.iteye.com/blog/754087

    Java学习网站---API手册下载---开发工具---项目源码---学习资料汇总

    - **JDK 5.0 API**:官方中文版,帮助开发者理解和使用Java 5.0的类库和接口。 - **JDK 1.6 API**:CHM格式的中文版,适用于Java 1.6版本。 4. **Java源码下载**: - **源码爱好者-JAVA专区**:提供各种Java项目...

    javaeye热点阅读

    5. Effective Java Second Edition中文版:该书是Java编程的经典之作,中文版的发布让更多的中国开发者能学习到最佳实践。 6. 国内开源工作流Fire Workflow:Fire Workflow是中国本土的开源工作流引擎,它的出现...

    javaEye客户端

    JavaEye客户端是一款基于Java开发的开源软件,专为学习和理解客户端编程技术而设计,尤其适合初学者。这个客户端代码库包含了许多与网络通信相关的功能,主要集中在HTTP协议的使用和数据解析上。通过深入研究JavaEye...

    使用 Eclipse 平台进行调试 - Java - JavaEye论坛

    使用 Eclipse 平台进行调试 - Java - JavaEye论坛

    Java_Excel_API_jxl_.rar_excel java_java excel

    Java_Excel_API_jxl是用于处理Excel文件的一个流行库,它允许开发者以编程方式创建、读取和修改Excel文件。本篇文章将深入探讨如何使用jxl API进行Java与Excel的交互,并提供jxl.jar的下载信息。 一、jxl简介 jxl是...

    JAVA WEB 上傳(下載于JAVAEYE)

    2. `smart-upload.jar`:SmartUpload是另一个流行的文件上传工具,它提供了一套完整的API,使得文件上传操作变得简单。SmartUpload支持多文件同时上传,能处理文件大小和类型验证,还有错误处理机制。开发者可以通过...

    java基础知识总结(超级经典)

    ### Java基础知识总结(超级经典) #### 一、Java概述 - **起源与发展**:Java语言始于1991年Sun公司的James Gosling等人发起的Oak项目,最初目标是为了控制嵌入式设备,如有线电视交换盒和个人数字助理(PDA)。...

    java基础教程(强烈推荐)

    Java语言发展的历史中,Java的版本从Java 1.0开始,经历了Java 1.1、Java 1.2、Java 1.3、Java 1.4、Java 5、Java 6、Java 7、Java 8、Java 9等等,每个新版本的发布都带来了新的特性和改进。例如,Java 5版本中引入...

    JAva资源网站大全

    JavaEye曾是中国最大的Java技术社区之一,虽然目前可能已不活跃,但其存档的大量技术文章和讨论仍具有很高的参考价值。对于希望了解过去Java技术趋势和发展历史的开发者来说,这是一个不可多得的资源。 ### 9. Open...

    Android 中文API 合集(102 篇)

    ### Android中文API合集知识点概览 #### 一、引言 随着移动互联网的发展,Android作为全球最大的移动操作系统之一,在开发者社区中占据了重要的地位。为了帮助开发者更好地理解和使用Android的各种功能,Google提供...

    javaeye被黑

    javaeye被黑 大家看看

    Java版山寨星际----下载不扣分,回帖加1分,欢迎下载,童叟无欺

    ---Java版山寨星际 做了一大堆J2EE WEB应用之后,闲来无事决定研究一下桌面应用程序开发。 想了一下干脆做个Java版的星际,研究的对象就是星际的JS山寨版-JS星际。看了几下,当机立断决定山寨之。。。。 后来经过...

Global site tag (gtag.js) - Google Analytics