私はprotocol buffer
ファイルがあります:私は私のサーバーが移動中に書かれているgRPC:囲碁サーバとJavaクライアントで複数の戻り値を取得する方法
syntax = "proto3";
package v1api;
option java_multiple_files = true;
option java_package = "myApp.v1";
option java_outer_classname = "V1";
service API {
rpc Login(LoginRequest) returns (LoginResponse)
}
message LoginRequest {
int pin = 1
}
message LoginResponse {
string token = 1
}
(複数の値を返すことができます言語)、そして私のクライアントをAndroidアプリケーションです。
私は、サーバーのために行くのコードを生成するには、このいるProtobufを使用する場合、それはのようなものです:戻り値、(*LoginResponse, error)
があること
...
func (c *aPIClient) Login(ctx context.Context, in *LoginRequest, opts ...grpc.CallOption) (*LoginResponse, error) {
out := new(LoginResponse)
err := grpc.Invoke(ctx, "/v1api.API/Login", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
...
は注意してください。
私は私のAndroidのサイドのJavaコードを生成するには、このいるProtobufを使用するときに今、私のようなものを得る:ここでは、Javaのことができ、myApp.v1.LoginResponse
のようなだけの戻り値がある、ということ
public myApp.v1.LoginResponse login(myApp.v1.LoginRequest request) {
return blockingUnaryCall(getChannel(), METHOD_LOGIN, getCallOptions(), request);
}
はお知らせ。
私の質問は、サーバーによって返されたエラーの場合(return nil, err
など)、Android側で2番目の戻り値を取得する方法です。
例外として、 – RickyA