首页 > 代码库 > thrift 调取 python php go 客户端代码

thrift 调取 python php go 客户端代码

golang

package mainimport (    "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 TBinaryProtocolimport timetry:     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 客户端代码