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 ...
随机推荐
- Objective-C(装箱和拆箱)
概述 从前面的博文我们也可以看到,数组和字典中只能存储对象类型,其他基本类型和结构体是没有办法放到数组和字典中的,当然你也是无法给它们发送消息的也就是说有些NSObject的方法是无法调用的,这个时候 ...
- CodeForces 30C Shooting Gallery 简单dp
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/qq574857122/article/details/36944227 题目链接:点击打开链接 给定 ...
- python:协程
1,如何实现在两个函数之间的切换? def func1(): print(l) yield print(3) yield def func2(): g =func1() next(g) print(2 ...
- 关于eclipse中引入项目报错或者没有JRE System Library问题(jre报错)或者jre1.7(8)改为jre1.8(7)等问题
解决方法: 右键项目工程-->>properties->>java bulid path -->>>libraries -->>add libra ...
- 【洛谷P3811】[模板]乘法逆元
乘法逆元 题目链接 求逆元的三种方式: 1.扩欧 i*x≡1 (mod p) 可以化为:x*i+y*p=1 exgcd求x即可 inline void exgcd(int a,int b,int &a ...
- 使用fir.im和蒲公英进行测试的一些注意事项
前言:使用fir.im和蒲公英进行测试的一些注意事项 最近公司的项目遇到了一个问题,有的用户的手机系统版本低于9.3高于9.0的存在崩溃的情况,8.x的系统的用户的有的界面的显示有问题(比如说图片严重 ...
- nodejs+express开发blog(1)
前言 Nodejs是一个年轻的编程框架,充满了活力和无限激情,一直都在保持着快速更新.基于Nodejs的官方Web开发库Express也在同步发展着,每年升级一个大版本,甚至对框架底层都做了大手术.在 ...
- 牛客网NOIP赛前集训营-提高组18/9/9 A-中位数
链接:https://www.nowcoder.com/acm/contest/172/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 小a的强迫症(组合数学)
问题描述: 小a是一名强迫症患者,现在他要给一群带颜色的珠子排成一列,现在有N种颜色,其中第i种颜色的柱子有num(i)个.要求排列中第i种颜色珠子的最后一个珠子,一定要排在第i+1种颜色的最后一个珠 ...
- 关系型数据库设计——E-R图
一.数据管理技术的三个发展阶段: 1)人工管理阶段(20世纪50年代中期) 特点:数据不保存:应用程序管理数据:数据不共享:数据没有独立性: 2)文件系统阶段(20世纪50年代后—60年代)特点:数据 ...