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 在发送数据之前也会压缩字符串。
当我发送 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 在发送数据之前也会压缩字符串。