我是Android开发新手,想要创建一个带有thrift客户端的应用程序,该客户端在我的网络上使用thrift服务器。我已经获得了thrift定义文件和thrift编译器生成的java代码。
我该如何开始?如何将thrift库添加到我的项目中?我是否需要自己编译,如果是,我应该如何实现这个以兼容Android?
我可以直接使用与此类似的自动生成功能
public void getProduct(int productID, org.apache.thrift.async.AsyncMethodCallback resultHandler)
对我的服务进行异步调用,以便我遵循android最佳实践?或者使用此功能以任何方式阻止我的应用程序,还是有其他方式在Android上首选?
我使用当前版本的谷歌ADT(eclipse)。我的应用程序需要在android 4+设备上运行(我将minSdkVersion设置为15
)。
答案 0 :(得分:9)
很抱歉打算回答一个老问题。截至2016年2月,有一个特定于Android的Thrift编译器和客户端:https://github.com/Microsoft/thrifty。
它生成的类使用尽可能少的方法(比Apache实现小得多),并且生成的客户端默认是异步的。
答案 1 :(得分:7)
是的,你需要自己为Android构建thrift-lib。 Android拥有自己的httpcore,没有消费方法。在这里你可以找到如何更改thrift-library:here instruction 之后,只需将jar文件添加到libs-folder并将其添加到构建路径。
示例
THttpClient hclient = new THttpClient("your/endpoint/url");
TProtocol protocol = new TBinaryProtocol(hclient); // it depends on your data-format
Service.Client client = new Service.Client(protocol);
Product product = client.getProduct(int productID);
您需要将其作为Android AsyncTask执行:AsyncTask | Android Developers