gpt4 book ai didi

delphi - 使用 PutBlock 并将字节数组全部设置为零的 EIPHTTPProtocolExceptionPeer 异常

转载 作者:行者123 更新时间:2023-12-01 17:54:01 25 4
gpt4 key购买 nike

使用 Delphi XE2 Update 3 我在将零字节 block 上传到 Azure 时遇到问题。当我说零字节时,我的意思是每个元素设置为零的字节数组(不是零长度)。

例如:

var
ConInfo: TAzureConnectionInfo;
RespInfo: TCloudResponseInfo;
BlobService: TAzureBlobService;
Content: TBytes;
MD5: String;
Hasher: TIdHashMessageDigest5;
begin
ConInfo:=TAzureConnectionInfo.Create(self);
ConInfo.AccountName:='YOUR ACCOUNT NAME';
ConInfo.AccountKey:='YOUR ACCOUNT KEY';
ConInfo.Protocol:='http';

BlobService:=TAzureBlobService.Create(ConInfo);
RespInfo:=TCloudResponseInfo.Create;

SetLength(Content, 1048576); // 1 MByte
FillMemory(@Content[0], 1048576, 0); // << --- fill it with anything except 0 and it works

Hasher:=TIdHashMessageDigest5.Create;
MD5:=Data.Cloud.CloudAPI.EncodeBytes64(Hasher.HashBytes(Content));
Hasher.Free;

BlobService.PutBlock('CONTAINER NAME', 'BLOB NAME', MD5, Content, MD5, '', RespInfo);

如果运行上述代码,则调用 PutBlock 时会引发异常:

Project Project1.exe raised exception class EIPHTTPProtocolExceptionPeer with message 'HTTP/1.1 403 Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.'.

但是,如果您更改 FillMemory 行,使其用 1(或除零以外的任何值)填充,则它可以正常工作而不会出现错误。为什么?

感谢您的帮助。

最佳答案

令人难以置信的是,问题似乎出在ttgbNgpWctgMJ0MPORU+LA==的区 block ID值

如果您将其用作 block ID,则会收到该错误。

关于delphi - 使用 PutBlock 并将字节数组全部设置为零的 EIPHTTPProtocolExceptionPeer 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9307637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com