【问题标题】:Google Storage API 1.8.1 - Item getting issueGoogle Storage API 1.8.1 - 物品获取问题
【发布时间】:2014-05-19 07:30:56
【问题描述】:

我无法通过Google Storage Service API获得物品:

Google.Apis.Storage.v1.StorageService service;
// ...
Google.Apis.Storage.v1.ObjectsResource.GetRequest request = service.Objects.Get(bucketName, uri);
request.Alt = StorageBaseServiceRequest<GCSObject>.AltEnum.Json;

Google.Apis.Storage.v1.Data resp = request.Execute();

我收到 GoogleApiException

"An Error occurred, but the error response could not be deserialized."

无论存储中是否存在指定的项目。

"request.ExecuteAsStream()" returns "Not Found" text only.

尝试通过service.ObjectAccessControls.Insert() 方法设置ObjectAccessControl 时也会出现同样的问题。

你有什么建议吗?

附:我可以上传一个项目,但没有任何问题。

【问题讨论】:

  • 您是否正确获取了 UserCredential?您还没有包含您的登录代码。
  • 登录码正常。我可以通过 ObjectsResource.InsertMediaUpload request = service.Objects.Insert(bucketName, stream, contentType); 插入一个项目request.Upload();
  • 我只是好奇:如果删除带有“request.Alt = ...”的行会发生什么。你也可以在 Fiddler 中附加服务器响应(telerik.com/download/fiddler
  • 删除“request.Alt = ...”不会改变任何东西。

标签: google-api google-cloud-storage google-api-dotnet-client


【解决方案1】:

检查您的 URI/对象是否包含需要转义的字符,例如“/”。 它可能会导致(在 .NET4 中)响应未找到 404,这意味着在 Google 云上找不到对象。 .net 的 google api 无法序列化此错误,因此您会收到此无用消息(“错误响应无法反序列化”)。

要修复它,请添加到网络配置:

<uri>
<schemeSettings>
<add name="https" genericUriParserOptions="DontUnescapePathDotsAndSlashes" />
</schemeSettings>
</uri>

我在这里解释了这个场景:Slash, Google Cloud Storage & .NET4

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多