XML Azure Blob 服务响应格式错误 API

Error with XML Response Format with Azure Blob Service API

当我发送 GET 请求时:

GET











x-ms-date:Fri, 03 Feb 2017 05:50:10 GMT
x-ms-version:2016-05-31
/xyz/mycontainer
comp:list
delimeter:/
maxresults:1000
prefix:image
restyle:container

请求成功,代码 200 和消息 "OK"。但是,我在解析响应时遇到错误。

Error: Error while parsing XML: Content is not allowed in prolog.

但是当我删除前 3 个字节时:

while(i!=3){
                System.out.println(in.read());
                i++;
            }

它开始正确解析 XML。

当我在 ASCII table 中查找这些代码时。我发现以下字符:

'╗┐

为什么 Azure Blob Service Rest API 在 XML 的开头添加这些字符作为响应?

我的朋友说这可能是因为这个特定的响应 header 包括 Transfer-Encoding:分块在 header 中。 但是,我听不懂他在说什么,他自己也不确定?

Code: Simple XML Parsing code.

Response: Starting bits:

 <?xml version="1.0" encoding="utf-8"?><EnumerationResults
    > ServiceEndpoint="http://xyz.blob.core.windows.net/"
    > ContainerName="mycontainer"><Prefix>xyz</Prefix><MaxResults>1000</MaxResults><Blobs><Blob><Name>xyz</Name>

我得到了答案。基本上,Azure 对不同的响应传输使用不同的传输编码。通常对于大文件,它使用分块传输编码。

因此,如果我想使用分块传输编码传输数据“Arjun_rocks”。它将是:

4\r\n
Arju\r\n
5\r\n
_rock\r\n
0\r\n
\r\n

So, first 3 characters are length of data transferred and then carriage return and then newline character.

我发布的 ASCII 字符被错误地打断了,因为 Azure 在发送数据之前也会压缩字符串。