thrift 调取 python php go 客户端代码
golang
- package main
- import (
- "fmt"
- "git.apache.org/thrift.git/lib/go/thrift"
- "net"
- "thriftproxy"
- "time"
- )
- type ThriftClient struct {
- client *thriftproxy.ThriftProxyClient
- transport *thrift.TSocket
- }
- func (c *ThriftClient) NewThriftClient() {
- //thrift
- transportFactory := thrift.NewTFramedTransportFactory(thrift.NewTTransportFactory())
- protocolFactory := thrift.NewTBinaryProtocolFactoryDefault()
- var er error
- c.transport, er = thrift.NewTSocket(net.JoinHostPort(thrift_host, thrift_port))
- c.transport.SetTimeout(TIMEOUT * time.Second)
- if er != nil {
- panic(fmt.Sprintf("error resolving address:%v", er))
- }
- useTransport := transportFactory.GetTransport(c.transport)
- c.client = thriftproxy.NewThriftProxyClientFactory(useTransport, protocolFactory)
- if err := c.transport.Open(); err != nil {
- panic(fmt.Sprintf("Error opening socket:%v", err))
- }
- }
- func (c *ThriftClient) Close() {
- c.transport.Close()
- }
- thriftclient := new(ThriftClient)
- thriftclient.NewThriftClient()
- defer thriftclient.Close()
- detailRequest := new(se.DetailRequest)
- detailRequest.HotelId =178236
- r, err = thriftclient.client.SearchDetailRtsSync(detailRequest)
php
- ?php
- header ( "Content-type: text/html; charset=utf-8" );
- $GLOBALS['THRIFT_ROOT'] =dirname(__FILE__). '/Thrift';
- require_once dirname(__FILE__).'/Thrift.php';
- require_once $GLOBALS['THRIFT_ROOT'].'/Protocol/TBinaryProtocol.php';
- require_once $GLOBALS['THRIFT_ROOT'].'/Transport/TSocket.php';
- require_once $GLOBALS['THRIFT_ROOT'].'/Transport/THttpClient.php';
- require_once $GLOBALS['THRIFT_ROOT'].'/Transport/TBufferedTransport.php';
- require_once $GLOBALS['THRIFT_ROOT'].'/Transport/TFramedTransport.php';
- require_once $GLOBALS['THRIFT_ROOT'].'/Type/TType.php';
- require_once $GLOBALS['THRIFT_ROOT'].'/Type/TMessageType.php';
- require_once $GLOBALS['THRIFT_ROOT'].'/Factory/TStringFuncFactory.php';
- require_once $GLOBALS['THRIFT_ROOT'].'/StringFunc/TStringFunc.php';
- require_once $GLOBALS['THRIFT_ROOT'].'/StringFunc/Core.php';
- require_once $GLOBALS['THRIFT_ROOT'].'/Base/TBase.php';
- require_once $GLOBALS['THRIFT_ROOT'].'/Exception/TException.php';
- require_once $GLOBALS['THRIFT_ROOT'].'/Exception/TProtocolException.php';
- require_once $GLOBALS['THRIFT_ROOT'].'/Exception/TTransportException.php';
- require_once $GLOBALS['THRIFT_ROOT'].'/Exception/TApplicationException.php';
- //error_reporting(E_NONE);
- $GEN_DIR = './gen-php';
- require_once $GEN_DIR.'/ThriftProxy.php';
- require_once $GEN_DIR.'/Types.php';
- error_reporting(E_ALL);
- $socket = new Thrift\Transport\TSocket('127.0.0.1', 5101);
- $socket->setDebug(true);
- // 设置接收超时(毫秒)
- $socket->setSendTimeout(10000);
- $socket->setRecvTimeout(20000);
- $transport = new Thrift\Transport\TFramedTransport($socket);//支持的数据传输方式 取决于服务器端的使用模式 和服务器的设置一样
- $protocol = new Thrift\Protocol\TBinaryProtocol($transport); //支持的传输格式 选择传输层,这块要和服务器的设置一样
- $client = new ThriftProxyClient($protocol);
- $transport->open();
- try{
- $ListRequest=new ListRequest();
- $ListRequest->check_in_date= strtotime('2014-07-20');
- $ListRequest->check_out_date=strtotime('2014-07-21');
- $ListRequest->region_id='178236';
- $ListRequest->rank_type=RankType::PRICEASC;
- $ListRequest->hotel_star=array(HotelStarType::STAR4,HotelStarType::STAR3);
- $PageInfo=new PageInfo();
- $PageInfo->page_no=1;
- $PageInfo->page_size=50;
- $ListRequest->page_info=$PageInfo;
- $a = $client->SearchList($ListRequest);
- var_dump($a);
- } catch (TException $tx) {
- print 'TException: '.$tx->getMessage()."/n";
- }
- $transport->close();
- ?>
python
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- import sys
- sys.path.append('gen-py')
- sys.path.append('thrift')
- from thriftproxy import ThriftProxy
- from se.ttypes import *
- from thrift import Thrift
- from thrift.transport import TSocket
- from thrift.transport import TTransport
- from thrift.protocol import TBinaryProtocol
- import time
- try:
- socket = TSocket.TSocket('127.0.0.1', 5101)
- transport = TTransport.TFramedTransport(socket)
- protocol = TBinaryProtocol.TBinaryProtocol(transport)
- client = ThriftProxy.Client(protocol)
- transport.open()
- request=ListRequest()
- request.check_in_date=time.time()+86400
- request.check_out_date=time.time()+86400*2
- request.region_id=178236
- response = client.SearchList(request)
- print response
- transport.close()
- except Thrift.TException, tx:
- print "%s" % (tx.message)
thrift 调取 python php go 客户端代码的更多相关文章
- 【hbase】使用thrift with python 访问HBase
HBase 版本: 0.98.6 thrift 版本: 0.9.0 使用 thrift client with python 连接 HBase 报错: Traceback (most recent ...
- 使用Thrift让Python和C#可以相互调用
在聊如何使用Thrift让Python和C#可以互相调用之前,我们先来看看下面的话题. 一.什么是微服务.微服务的特征.诞生的背景.优势和不足 微服务:使用一套小服务来开发单个应用的方式,每个服务运行 ...
- 【Python】 http客户端库requests & urllib2 以及ip地址处理IPy
requests requests是个HTTPClient库,相比于urllib,urllib2等模块比更加简洁易用 ■ get请求 作为示例,讲一下关于requests如何发起并处理一个get请求 ...
- Netty学习——服务器端代码和客户端代码 原理详解
服务器端代码和客户端代码 原理详解:(用到的API) 0.Socket 连接服务器端的套接字 1.TcompactProtocol 协议层2.TFrameTransport 传输层3.THsh ...
- Python网络编程常用代码
服务器端代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 # -*- coding: cp936 -*- ...
- python实现一个客户端与服务端的通信
函数介绍 Socket对象方法: 服务端: 函数 描述 .bind() 绑定地址关键字,AF_INET下以元组的形式表示地址.常用bind((host,port)) .listen() 监听TCP,可 ...
- HTTPS请求HTTP接口被浏览器阻塞,python实现websocket客户端,websocket服务器,跨域问题,dwebsocket,https,拦截,服务端
HTTPS请求HTTP接口被浏览器阻塞,python实现websocket客户端,websocket服务器,跨域问题,dwebsocket,https,拦截,服务端 发表时间:2020-03-05 1 ...
- axis2生成客户端代码
通过aix2生成客户端代码需要准备相应的包,然后执行命令,步骤如下: 一.所需包准备 下载axis2-1.6.2-bin.zip,解压从lib包中取出 jaxrpc.jar wsdl4j-1.6.2. ...
- 在C#开发中如何使用Client Object Model客户端代码获得SharePoint 网站、列表的权限情况
自从人类学会了使用火,烤制的方式替代了人类的消化系统部分功能,从此人类的消化系统更加简单,加速了人脑的进化:自从SharePoint 2010开始有了Client Side Object Model ...
随机推荐
- 关于c++对文件读写的封装
namespace { UINT_T GetWriteSizeForNoBuf(UINT_T fsize) { UINT_T write_buf_size = ; == ) { write_buf_s ...
- POJ 1011 Sticks 【DFS 剪枝】
题目链接:http://poj.org/problem?id=1011 Sticks Time Limit: 1000MS Memory Limit: 10000K Total Submissio ...
- 论文翻译:XNOR-Net: ImageNet Classification Using BinaryConvolutional Neural Networks
目录 Abstract 1 Introduction 2 Related Work 3 Binary Convolutional Neural Network 3.1 Binary-Weight-Ne ...
- 最短路问题:迪杰斯特拉算法(Dijsktra)
Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.Di ...
- Android学习笔记_58_清除手机应用程序缓存
通过查看手机设置(setting)源代码,发现它里面获取应用大小和缓存大小是通过PackageManager里面的getPackageSizeInfo方法.然而此方法时私有的,因此通过反射调用此方法. ...
- 【题解】洛谷P2532 [AHOI2012]树屋阶梯(卡特兰数+高精)
洛谷P2532:https://www.luogu.org/problemnew/show/P2532 思路 来自Sooke大佬的推导: https://www.luogu.org/blog/Sook ...
- CodeForces 501B Misha and Changing Handles(STL map)
Misha hacked the Codeforces site. Then he decided to let all the users change their handles. A user ...
- JavaScript:对事件的反应
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- 学习Node.js知识小结
什么是Node.js 官方解释:Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js使用了一个事件驱动.非阻塞式I/O的模型( Node.js的特性 ...
- Flask—05-理解掌握flask数据模型(01)
数据模型 数据库回顾 分类: 关系型数据库:MySQL.sqlite.… 非关系型数据库:Redis.MongoDB.… 操作: 执行原生SQL语句,每次都需要拼接SQL语句,非常繁琐而且特别容易出错 ...