API SurveyQuestionImage.Data字段的正确格式是什么?

我正在使用GCS API,尝试使用图像数据创建调查。

我在.Net平台上使用NuGet包Google.Apis.ConsumerSurveys.v2版本1.14.0.564。 我可以创建不包含图像数据的调查而没有问题。 但是,当我尝试使用图像数据创建调查时,我收到来自API的错误。

我手边有base64编码的png格式图像数据。 当src属性设置为时,我的图像在网页上的IMG标记中正确显示

'data:image/png;base64,' 

我想将此图像数据发送到API以填充调查图像。 我的理解是我需要将Google.Apis.ConsumerSurveys.v2.Data.SurveyQuestionImage对象的Data属性设置为包含图像数据的字符串。 我没有成功。

我首先将我的base64字符串解码为字节数组:

 byte[] bytes = Convert.FromBase64String(); 

我已经尝试在SurveyQuestionImage对象中设置Data属性:

 image.Data = Encoding.Unicode.GetString(bytes); 

这会导致API出现此错误:

 Google.Apis.Requests.RequestError Invalid value for ByteString:  

我也尝试将字节数组转换为hex编码的字符串:

 StringBuilder sb = new StringBuilder(bytes.Length); foreach (Byte b in bytes) { sb.Append(b.ToString("X2")); } image.Data = sb.ToString(); 

这导致了更有希望的错误:

 Google.Apis.Requests.RequestError Invalid Value supplied to API: image_data was bad. Request Id: 579665c300ff05e6c316a09e600001737e3430322d747269616c320001707573682d30372d32322d72313000010112 [400] Errors [ Message[Invalid Value supplied to API: image_data was bad. Request Id: 579665c300ff05e6c316a09e600001737e3430322d747269616c320001707573682d30372d32322d72313000010112] Location[ - ] Reason[INVALID_VALUE] Domain[global] ] 

有谁知道Google.Apis.ConsumerSurveys.v2.Data.SurveyQuestionImage对象的Data属性的正确格式?

数据需要是base64编码的,还需要“urlsafe”或“websafe”,具体取决于您使用的语言。 (分别是python和java)

换句话说,您需要首先进行base64编码:

Web安全编码使用’ – ‘而不是’+’,’_’而不是’/’

希望这可以帮助!

对于c#用户,请查看此技术以制作websafe b64:

如何在C#中实现Base64 URL安全编码?

对于.net用户,请查看此问题中的评论:

将字符串转换为Web安全的Base64格式

此链接还有关于.net特定编码选项的更多信息:

http://www.codeproject.com/Tips/76650/Base-base-url-base-url-and-z-base-encoding


要专门回答原始海报,请尝试将您的字节数组转换为字符串。

  public static string ToBase64ForUrlString(byte[] input) { StringBuilder result = new StringBuilder(Convert.ToBase64String(input).TrimEnd('=')); result.Replace('+', '-'); result.Replace('/', '_'); return result.ToString(); } 
Interesting Posts