`
胡四爷
  • 浏览: 8857 次
文章分类
社区版块
存档分类
最新评论

解决淘宝客户端获取sessionKey的问题。

阅读更多

通过Java内嵌浏览器登录http://container.open.taobao.com/container?appkey={ appkey } 授权后会在页面上得到一个字符串。当然通过神马httpclient啊之类的抓取页面源码都是抓取不到的。只有通过swt的不知道神马版本里面有一个browser.getText();才能得到源代码。之后把得到的字符串解码就OK了。附代码

 

package com.evangelsoft.jx.taobao.frame;

import java.awt.Dimension;
import java.awt.Toolkit;
import java.io.UnsupportedEncodingException;
import java.util.ResourceBundle;

import javax.swing.JInternalFrame;

import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.ProgressEvent;
import org.eclipse.swt.browser.ProgressListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

import com.evangelsoft.jx.taobao.api.config.TbConstan;
import com.evangelsoft.jx.taobao.api.config.TbExitLogo;

/**
 * <p>Title: 获取top_session</p>
 * <p>Description:内嵌获取top_session值的网页 </p>
 * @date 2011-9-21 上午10:34:22
 */
@SuppressWarnings("serial")
public class GetTopSessionFrame extends JInternalFrame {

 public String top_session = "";

 /**
  * 引用包资源文件。
  */
 private static ResourceBundle res = ResourceBundle
   .getBundle(GetTopSessionFrame.class.getPackage().getName() + ".Res");

 public GetTopSessionFrame(boolean logooff) {
  super();
  try {
   run(logooff);
  } catch (UnsupportedEncodingException e) {
   e.printStackTrace();
  }
  pack();
 }

 public GetTopSessionFrame() {
 }

 public void run(boolean logooff) throws UnsupportedEncodingException {
  Display display = new Display();
  Shell shell = new Shell(display);
  shell.setText(res.getString("BROWSER_TITLE"));
  createContents(shell, logooff);
  shell.open();
  while (!shell.isDisposed()) {
   if (!display.readAndDispatch()) {
    display.sleep();
   }
  }
  display.dispose();
 }

 /**
  * Creates the main window's contents
  * 
  * @param shell
  *            the main window
  * @throws UnsupportedEncodingException 
  */
 private void createContents(final Shell shell, final boolean logooff)
   throws UnsupportedEncodingException {
  shell.setLayout(new FormLayout());
  shell.setSize(new Point(560, 614));
  Point frameSize = shell.getSize();//获得窗体的大小
  Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();//获取屏幕的大小
  shell.setLocation((screenSize.width - frameSize.x) / 2,
    (screenSize.height - frameSize.y) / 2);//居中
  Composite controls = new Composite(shell, SWT.NONE);
  FormData data = new FormData();
  data.top = new FormAttachment(0, 0);
  data.left = new FormAttachment(0, 0);
  data.right = new FormAttachment(100, 0);
  controls.setLayoutData(data);

  final Browser browser = new Browser(shell, SWT.FILL);
  data = new FormData();
  data.top = new FormAttachment(controls);
  data.bottom = new FormAttachment(100, 0);
  data.left = new FormAttachment(0, 0);
  data.right = new FormAttachment(100, 0);
  browser.setLayoutData(data);
  if (logooff) {
   TbExitLogo logo = new TbExitLogo();
   browser.setUrl(logo.getlogoffURL());
   //   GetTopSessionFrame f = new GetTopSessionFrame(logooff);
   //   f.setDefaultCloseOperation(GetTopSessionFrame.DO_NOTHING_ON_CLOSE);
  } else {
   browser.setUrl(TbConstan.TOP_SESSION_URL);
  }

  controls.setLayout(new GridLayout(6, false));
  browser.addProgressListener(new ProgressListener() {

   @Override
   public void changed(ProgressEvent arg0) {
   }

   @Override
   public void completed(ProgressEvent arg0) {
    String url = browser.getUrl();
    try {
     if (("http://container.api.taobao.com/container")
       .equals(url)) {
      String container = browser.getText();
      String[] arr = container.split("&amp;");
      for (int i = 0; i < arr.length; i++) {
       if (arr[i].indexOf("top_session=") != -1) {
        top_session = arr[i]
          .replace("top_session=", "");
       }
      }
      if (!("").equals(top_session)) {
       TbConstan.TOP_SESSION = top_session;
       shell.close();
      }
     }
     if (("http://www.taobao.com/").equals(url)) {
      shell.close();
     }

    } catch (Exception e) {
     e.printStackTrace();
    }

   }

  });
 }

}
 
0
0
分享到:
评论

相关推荐

    淘宝/天猫TOP获取Sessionkey解决方案

    本项目“淘宝/天猫TOP获取Sessionkey解决方案”提供了一个WinForm应用程序,旨在帮助开发者便捷地获取到用于安全通信的Sessionkey。下面将详细解释这个过程中的关键知识点。 首先,了解Sessionkey的概念。...

    淘宝API获取SessionKey获取订单源码

    在本案例中,"淘宝API获取SessionKey获取订单"涉及到了两个关键概念:SessionKey和订单获取。 1. **SessionKey**: SessionKey是淘宝API中的安全凭证,用于验证调用API的开发者身份。在进行API请求时,需要将...

    淘宝API来获取Sessionkey并获取订单详细信息

    利用淘宝API来获取淘宝订单详细信息,帮助淘宝卖家管理订单 ,可以自动获得短期的SessionKey

    京东sessionkey获取方式 后台地址

    文档中内容包括: 1.京东测试地址 2.注册成为开发者地址 3.开发者中心地址 4.订单服务(接口地址) 5.商家后台地址 6.京东API接入流程文档 7.获取京东的code 8.获取access_token

    淘宝API调用

    淘宝API调用是开发者与淘宝平台进行数据交互的重要方式,它允许第三方应用通过特定的接口获取或修改淘宝上的商品信息、订单数据等。在进行淘宝API调用时,需要掌握以下几个核心概念和技术: 1. **淘宝API**:API是...

    腾讯云微信小程序一站式解决方案客户端示例

    在这个“腾讯云微信小程序一站式解决方案客户端示例”中,我们将探讨登录接口、会话网络请求以及WebSocket信道服务的使用方法。 首先,我们来看登录接口的使用。在微信小程序中,用户的身份验证是非常重要的,因为...

    淘宝获取交易数据

    根据TOP的SDK编写的一个小应用程序,演示了如何获取sessionKey,然后调用TOP中的交易API,获取指定商家的交易数据,希望对于刚刚接触TOP的亲们有所帮助,因为准备开发的是一个C/S应用,所以没有考虑加密问题。

    【小程序】 PHP解密用户数据获取unionid的方法 【已经封装到一个类中】

    实例化类 并调用 获取 opendid 和 sessionKey的方法 例如:(new WeixinApp())-&gt;get_login($code = ''); 参数code 只有小程序端才能获取到,需要传进来。2. 获取 unionid . $res = (new WeixinApp())-&gt;decryptData( ...

    微信小程序获取用户手机号详解

    最近在做一款微信小程序,需要获取用户手机号,具体步骤如下:流程图:1、首先,客户端调用wx.login,回调数据了包含js_code,用于获取openid(用户唯一标识)和sessionkey(会话密钥)。2、拿到js_code后,将其发送...

    Rtx与OA集成问题

    2. 对于RTX2006版本,如果RTXName.dll控件出现问题,尝试使用RTX3.61版本的dll替换,有时可以解决问题。 **SessionKey登录** 实现OA与RTX的单点登录,需要OA登录成功后自动登录RTX。首先,OA服务器需要安装Server ...

    淘宝Top api

    首先,"sessionkey获取sessionkeyDemo.rar"可能包含一个示例程序,演示如何获取淘宝的sessionkey。在淘宝Top API中,sessionkey是安全验证的关键部分,它用于标识用户会话并确保请求的安全性。开发者通常需要先通过...

    报文响应+获取会话公钥(SessionKey)+RAS加密+AES加密+MD5加密

    1、接入申请:在接入单位应先向税务局申请,经过审批备案后,将生成的唯一的接入方编号(appCode)和通过使用OpenSSL生成的一对私钥和公钥。其中,私钥由税务局保留,接入方编号(appCode)和公钥分配给申请接入单位,接...

    微信小程序获取手机号 (java解密及微信小程序获取openid、session_key)

    java解析的源码和小程序的源码,自己从项目中剥离出来的,肯定能用,有疑问私信,微信小程序获取各类信息(openid、session_key以及用户基本信息、解密手机号)

    微信小程序服务器端换取token,sessionKey,微信用户信息解密).zip

    如果您下载了本程序,但是该程序存在问题无法运行,那么您可以选择退款或者寻求我们的帮助(如果找我们帮助的话,是需要追加额外费用的)。另外,您不会使用资源的话(这种情况不支持退款),也可以找我们帮助(需要...

    微信小程序前端解密获取手机号

    在微信小程序中,获取用户手机号是一项重要的功能,它涉及到用户的隐私保护和应用的安全性。本文将深入探讨微信小程序如何在前端实现安全地解密获取用户手机号。 一、微信小程序授权获取手机号流程 1. 用户授权:...

    实现rtx单点登录使用sessionkey

    "实现rtx单点登录使用sessionkey"这个主题是关于如何利用Session Key在RTX(即时通讯工具)和其他应用系统之间实现SSO。 首先,我们需要理解RTX。RTX是腾讯推出的一款企业级即时通讯软件,类似于企业版的QQ,提供...

    Wx_SessionKey_crypt(1).zip

    Wx_SessionKey_crypt(1).zip

    微信小程序的wx.request API和获取openId、sessionKey的方法【原创】 ...

    先简单介绍一下wx.request API,因为获取openId、sessionKey也需要用这个API。 wx.request就是ajax,与后台交互请求数据,基础参数和用法与jQuery的$.ajax方法类似。下面是官方文档对wx.request基础参数的说明:...

    微信小程序如何获取用户手机号

    1、首先,客户端调用wx.login,回调数据了包含jscode,用于获取openid(用户唯一标识)和sessionkey(会话密钥)。 2、拿到jscode后,将其发送给服务端,服务端拿它与微信服务端做交互获取openid和sessionkey。具体...

    微信小程序通过php后端解密后获得微信步数

    解决这类问题,我们需要确保所有字符串操作都在同一编码环境下进行,或者在必要时进行正确的编码转换。 在实际项目中,为了提高安全性,还可以考虑使用HTTPS协议进行通信,防止数据在传输过程中被窃取。同时,对于...

Global site tag (gtag.js) - Google Analytics