• 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 ThriftTransportTSocket('127.0.0.1', 5101);  
        $socket->setDebug(true);
        // 设置接收超时(毫秒)  
        $socket->setSendTimeout(10000);
        $socket->setRecvTimeout(20000);
        $transport = new ThriftTransportTFramedTransport($socket);//支持的数据传输方式 取决于服务器端的使用模式 和服务器的设置一样 
        $protocol = new ThriftProtocolTBinaryProtocol($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)
  • 相关阅读:
    太精辟了!从学校到职场的十条经典语录!
    平庸领导下跳棋,伟大领导下象棋(转)
    新官上任前的十一大基本功
    病母私自出房有感
    你为何还会出现在我梦里
    创业辛酸
    Goldengate can't extract data from compressed table
    配置GoldenGate同步DDL语句(3)
    Goldengate各build与Oracle数据库版本间的兼容性
    11g新特性:Note raised when explain plan for create index
  • 原文地址:https://www.cnblogs.com/wangxusummer/p/4118689.html
Copyright © 2020-2023  润新知