import java.io.IOException;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import xx.cn.weibo.Util;
import weibo4j.http.HttpClient;
import weibo4j.http.OAuth;
import weibo4j.http.PostParameter;
import weibo4j.http.Response;
/**
* 注意项:提交参数的顺序不能改变,顺序为oauth_callback-oauth_consumer_key-oauth_nonce-oauth_signature_method-oauth_timestamp-oauth_version-source
* @author loiy
* @time 2011-03-25
*/
public class requestTokenNet extends HttpClient{
private String requestUrl;
private String httpMethod;
private String callBackUrl;
public static Random RAND = new Random();
public requestTokenNet(String requestUrl,String callBackUrl,String httpMethod){
this.requestUrl = requestUrl;
this.httpMethod = httpMethod;
this.callBackUrl = callBackUrl;
}
public Response getRequestToken(){
int retriedCount;
Response requestToken = null;
boolean bool = false;
for (retriedCount = 0; retriedCount <= Util.retryCount && !bool; retriedCount++) {
HttpURLConnection con = null;
OutputStream osw = null;
Response res = null;
int responseCode = -1;
try {
String Authorization = generateAuthorizationHeader(this.httpMethod,
this.requestUrl,
new PostParameter[]{new PostParameter("oauth_callback", this.callBackUrl),
new PostParameter("source",Util.APPKEY)});
con = getConnection(this.requestUrl);
con.setDoInput(true);
con.addRequestProperty("Authorization", Authorization);
con.setRequestMethod(this.httpMethod);
con.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
con.setDoOutput(true);
String postParam = "oauth_callback="+URLEncoder.encode(this.callBackUrl,"UTF-8")+"&source="+URLEncoder.encode(Util.APPKEY,"UTF-8");
byte[] bytes = postParam.getBytes("UTF-8");
con.setRequestProperty("Content-Length",
Integer.toString(bytes.length));
osw = con.getOutputStream();
osw.write(bytes);
osw.flush();
osw.close();
responseCode = con.getResponseCode();
if (responseCode != 200) {
System.out.println("getRequestToken of method is error.No-" + responseCode + " Retrying...");
} else {
bool = true;
requestToken = new Response(con);
//requestToken = res.asString();
}
}catch(Exception e){
e.printStackTrace();
}finally{
try {
osw.close();
//con.disconnect();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return requestToken;
}
public String generateAuthorizationHeader(String method, String requestUrl, PostParameter[] params) {
long timestamp = System.currentTimeMillis() / 1000;
long nonce = timestamp + RAND.nextInt();
return generateAuthorizationHeader(method, requestUrl, params, String.valueOf(nonce), String.valueOf(timestamp));
}
private String generateAuthorizationHeader(String method, String url, PostParameter[] params, String nonce, String timestamp) {
if (null == params) {
params = new PostParameter[0];
}
List<PostParameter> oauthHeaderParams = new ArrayList<PostParameter>(5);
oauthHeaderParams.add(new PostParameter("oauth_consumer_key", Util.APPKEY));
oauthHeaderParams.add(new PostParameter("oauth_signature_method",Util.OAUTH_SIGNATURE_METHOD));
oauthHeaderParams.add(new PostParameter("oauth_timestamp", timestamp));
oauthHeaderParams.add(new PostParameter("oauth_nonce", nonce));
oauthHeaderParams.add(new PostParameter("oauth_version", "1.0"));
List<PostParameter> signatureBaseParams = new ArrayList<PostParameter>(oauthHeaderParams.size() + params.length);
signatureBaseParams.addAll(oauthHeaderParams);
signatureBaseParams.addAll(OAuth.toParamList(params));
StringBuffer base = new StringBuffer(method).append("&")
.append(OAuth.encode(OAuth.constructRequestURL(url))).append("&");
String text = OAuth.encode(OAuth.normalizeRequestParameters(signatureBaseParams));
base.append(text);
String oauthBaseString = base.toString();
String signature = Util.hmacsha1(Util.APPSECRET, oauthBaseString);
oauthHeaderParams.add(new PostParameter("oauth_signature", signature));
text = "OAuth " + OAuth.encodeParameters(oauthHeaderParams, ",", true);
oauthHeaderParams.clear();
oauthHeaderParams = null;
return text;
}
}
里面有些参数不能给各位看,但是可以根据办法名字就知道需要什么参数拉.如果还不知道,可以给我留言.
下面是测试:
public class xxNetTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
requestTokenNet requestTokenNetTest = new requestTokenNet("http://api.t.sina.com.cn/oauth/request_token",
"http://localhost:8080/agriWeiBo/callback.jsp","POST");
Response requestToken = requestTokenNetTest.getRequestToken();
RequestToken token = null;
try {
token = new RequestToken(requestToken,requestTokenNetTest);
} catch (WeiboException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("s="+token.getToken());
}
}
返回正确结果形式:
oauth_token=ad75db0a09031b04c842777398ffb73d&oauth_token_secret=f854d467045ec5131f4aae04934ce999
如果是401错误,一般都是baseString写的不对.什么是baseString,到官方去了解一下,这里不做说明,地址是:
http://open.t.sina.com.cn/wiki/index.php/Oauth/request_token
分享到:
相关推荐
原版自我总结的,关于IBA BM-DP S7300/400 ruquest&activeslave;的通讯,在PLC和PDA的详细配置。
参数名称=参数值")方法,也可以用超链接:,页面跳转后,在目标页面中可用Ruquest["参数名称"]来接收参数。使用QuerySting 方法的优点是实现简单, 不使用服务器资源;缺点是传递的值会显示在浏览器的地址栏上,有...
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
SSM+easyUI搭建简易的人事管理系统内含源码以及说明书可以自己运行复现.zip
RoyalOnline.apk
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
TCABEE 008-2020 轨道交通车站高效空调系统技术标准.docx
2024-2030中国WiFi连接洗衣机市场现状研究分析与发展前景预测报告
2024年中国乘用车用密封连接器行业研究报告
单片机学习代码资料
单片机学习代码资料
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
功能 首页 搜索 分类 购物车 个人中心 商品列表 商品详情 订单 地址管理
2024年中国便捷火锅底料行业研究报告
PowerBuilder Base_64加密
基于Java的在线教育平台的设计与实现
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
Numpy随堂练习1.ipynb
2024年中国棒材送料对准系统行业研究报告
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。