Hi,all
因为业务需要,把原本的json的传输格式改成protobuf。服务端这边用的是php,客户端那边是android和ios。
在调试的过程中,发现客户端一直不能解析服务端传输过去的数据,android客户端一直报异常,如下:
Protobuf error:Protocol message tag had invalid wire type
php端这边的情况
Android端
php和android都是用同一套*.proto文件去生成对应的类。
php这边是如下序列化的:
// use binary codec
$codec = new \DrSlump\Protobuf\Codec\Binary();
// prepare final output
$response = new \ResponseMsg();
$response->setStatusCode(\ResponseMsg\ErrorCode::RET_OK);
$response->setData($codec->encode($recommend_bras));
// Use custom codec
$data = $codec->encode($response);
echo $data;
Android端的反序列化:
byte[] bytes = ret.result.getBytes();
//ByteString byteString = ByteString.copyFromUtf8(ret.result);
PResponseMsg.ResponseMsg responseMsg = PResponseMsg.ResponseMsg.parseFrom(bytes);
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
小伙看你根骨奇佳,潜力无限,来学PHP伐。