POST 쿼리에서 응답 데이터를 역 직렬화하려고합니다. 하지만 내 proto deserializer는 오류를 반환합니다.
'InvalidProtocolBuffer', reason: 'Invalid Tag: last tag 76'
다음은 나머지 클라이언트의 응답 문자열입니다.
"EJMDGhnQlNC+0YHRgtGD0L8g0LfQsNC60YDRi9GC"
그리고 여기 에이 문자열에서 데이터를 만드는 방법 :
let data = dataString.dataUsingEncoding(NSUTF8StringEncoding);
그리고 그것을 구문 분석하십시오.
var _deData = MobileGetNewsResponse.parseFromData(jsonData!)
이 문제를 해결하기위한 제안 사항이 있습니까?
"EJMDGhnQlNC+0YHRgtGD0L8g0LfQsNC60YDRi9GC"
이 데이터는 그 자체가 protobuf가 아닙니다. base64로 인코딩 된 protobuf 일 수 있습니다. 먼저 base64로 디코딩 한 다음 protobuf 파서에 전달해야합니다.
protobufs는 텍스트가 아니라 원시 바이트입니다. 원시 protobuf를 문자열에 저장하거나 유니 코드 또는 UTF-8로 해석해서는 안됩니다. 그것은 단지 바이트입니다. (base64는 바이트를 텍스트로 변환하는 한 가지 방법입니다.)
나는 또한이 라인에 대해 우려합니다.
var _deData = MobileGetNewsResponse.parseFromData(jsonData!)
JSON과 Protobufs는 완전히 다른 두 가지 형식입니다. protobuf를 JSON으로 구문 분석하거나 그 반대로 시도해서는 안됩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다