`
epsilonlink
  • 浏览: 2112 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

javaeye api httpclient 实现二

    博客分类:
  • java
阅读更多
package com.javaeye.api;
import java.io.IOException;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.http.client.ClientProtocolException;
public class TestClientUtils {
	public static void main(String[] args) {
		String str = null;
		try {
			str = ClientUtils.getJsonContent("api.iteye.com",
					"api/user_favorites/list", "username", "password");
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println(str);
		JSONObject json1 = null;
		JSONObject json = JSONObject.fromObject("{\"a\":" + str + "}");
		JSONArray array = json.getJSONArray("a");
		for (int i = 0; i < array.size(); i++) {
			json1 = JSONObject.fromObject(array.get(i));
			System.out.print(json1.get("title"));
			System.out.print("\t");
			System.out.print(json1.get("url"));
			System.out.print("\n");
		}
	}

}

 

package com.javaeye.api;

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 {
	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);
			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);
				}
			}

		}
	}
}

 

分享到:
评论

相关推荐

    httpClient调用javaeye API验证用户

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

    javaeye api [java httpclient版] 简单封装

    JavaEye API 的简单封装主要基于 Java 的 HttpClient 库,提供了更方便、易用的接口来执行 HTTP 请求。HttpClient 是一个成熟的 Java 库,用于执行 HTTP 协议的客户端请求,而 JavaEyeClient 则是对这个库进行了一层...

    JavaEye的API使用帮助.rar

    JavaEye的API使用帮助是一个针对JavaEye开发框架的详细指南,旨在帮助开发者更好地理解和应用这个框架。这个压缩包包含了三个文件:一个PDF文档,一个TXT文本文件,以及一个URL链接。接下来,我们将深入探讨JavaEye ...

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

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

    基于JavaEye-API实现的Gerry-聊天Dos版v1.0-lib库

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

    javaEye客户端

    2. Apache HttpClient库:这个库提供了一套更高级的API,允许更灵活的配置和控制HTTP请求。例如,可以方便地管理Cookie、设置超时、处理重定向等。 二、HTTP请求与响应处理 在JavaEye客户端中,可以看到如何构建...

    javaeye被黑

    javaeye被黑 大家看看

    javaeye热点阅读

    JavaEye热点阅读是JavaEye论坛推出的2009年2月特辑,旨在为Java学习者和开发者提供最新的知识及行业动态。这份资料包含了多个Java相关的主题,包括但不限于并发编程、开源项目、设计模式、框架应用以及软件开发实践...

    JavaEye Client SourceCode

    2. **Android SDK**:作为基于Android平台的应用,JavaEye Client SourceCode必然使用了Android SDK,包括Android API的各种类库,例如视图(View)和布局(Layout)系统,以及用于网络通信、数据库操作、文件I/O等...

    android javaeye客户端

    Android提供了HttpURLConnection、HttpClient等原生API,但现代开发更多倾向于使用第三方库,如OkHttp、Retrofit等,它们提供更便捷的网络请求和响应处理,同时支持异步操作,提升用户体验。 四、数据解析与缓存 ...

    JavaEye3.0开发手记

    #### 二、集成开发环境(IDE)选择 ##### NetBeans Ruby IDE **1. 简介** NetBeans Ruby IDE 是一个强大的集成开发环境,专门为Ruby on Rails (RoR) 开发而设计。它提供了丰富的功能和快捷键,极大地提高了开发...

    javaeye代码高亮插件

    在现代浏览器中,由于Flash已逐渐被淘汰,可能需要使用其他技术(如clipboard API)来实现相同的功能。 要在WordPress中使用这些文件,你需要将它们上传到合适的目录,例如主题的`js`和`css`文件夹,并在主题的`...

    JavaEye+技术架构

    5. **RESTful API**:JavaEye+可能通过RESTful设计原则来构建Web服务接口,以实现松耦合、无状态和统一的交互方式。 6. **Servlet和JSP**:作为Java Web开发的基础,Servlet用于处理HTTP请求,而JSP则用于动态生成...

    javaeye的信息提示框代码之js

    javaeye的信息提示框代码之css,application.js

    javaeye 基于android客户端

    开发者可以通过反编译工具查看这些类,了解JavaEye的具体实现逻辑。 `resources.arsc`文件存储了应用的所有资源的引用表,包括字符串、颜色、图像、布局等。在JavaEye中,这个文件可能包含了用户界面的各种元素,...

    Android 中文API 合集(102 篇)

    #### 二、Android中文API合集概述 《Android中文API合集》是由一群热心的Android爱好者组成的翻译组所共同完成的一个项目。这个合集包含了102篇经过精心翻译的API文档,覆盖了Android开发中的各个方面。这些文档不仅...

Global site tag (gtag.js) - Google Analytics