当我发送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"。但是,我在解析响应时遇到错误。
错误:解析XML时出错:prolog中不允许使用内容。
但是当我删除前3个字节时:
while(i!=3){
System.out.println(in.read());
i++;
}
它开始正确解析XML。
当我在ASCII表中查找这些代码时。我在下面找到了字符:
'╗┐
为什么Azure Blob Service Rest API会在响应的XML开头添加这些字符?
我的朋友说这可能是因为这个特殊的响应头包括Transfer-Encoding:chunked in header。 但是,我不明白他在说什么,他自己也不确定?
代码:简单的XML解析代码。
回应:起始位:
<?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>
答案 0 :(得分:0)
我得到了答案。基本上,Azure使用不同的传输编码进行不同的响应传输。通常对于大文件,它使用分块传输编码。
所以,如果我想传输数据“Arjun_rocks&#34;使用分块传输编码。它将是:
4\r\n
Arju\r\n
5\r\n
_rock\r\n
0\r\n
\r\n
因此,前3个字符是传输的数据长度然后 回车然后换行符。
我发布的ASCII字符被错误中断,因为Azure在发送数据之前也会压缩字符串。