S3 PUT到位置端点的存储桶会导致MalformedXML异常

时间:2014-04-18 19:28:06

标签: amazon-web-services amazon-s3

我正在尝试使用libCurl创建一个AWS s3存储桶:

位置终点 curl_easy_setopt(curl,CURLOPT_URL,“http://s3-us-west-2.amazonaws.com/”);

汇编的RESTful HTTP标头:

PUT / HTTP/1.1

Date:Fri, 18 Apr 2014 19:01:15 GMT

x-amz-content-sha256:ce35ff89b32ad0b67e4638f40e1c31838b170bbfee9ed72597d92bda6d8d9620
host:tempviv.s3-us-west-2.amazonaws.com

x-amz-acl:private

content-type:text/plain

Authorization: AWS4-HMAC-SHA256 Credential=AKIAISN2EXAMPLE/20140418/us-west-2/s3/aws4_request, SignedHeaders=date;x-amz-content-sha256;host;x-amz-acl;content-type, Signature=e9868d1a3038d461ff3cfca5aa29fb5e4a4c9aa3764e7ff04d0c689d61e6f164

Content-Length: 163

正文包含存储桶配置 http://s3.amazonaws.com/doc/2006-03-01/">us-west-2

我收到以下异常。 MalformedXML您提供的XML格式不正确或未针对我们发布的架构进行验证

我已经能够通过aws cli执行相同的操作。

我也尝试过的事情。

1)在xml中,使用\来转义引号(即xmlns = \“http:... / \”)。

2)未提供CreateBucketConfiguration(“虽然s3文档建议在将请求发送到位置端点时不允许这样做”)。

3)对同一端点的get服务调用正确列出了所有配置的存储桶。

如果我在这里还有其他任何东西,请告诉我。

1 个答案:

答案 0 :(得分:0)

好的,问题是我没有将整个xml传输到wireshark跟踪所显示的内容。一旦我修好了,问题就消失了。

顺便说一句......用一个\来逃避引号但是& “;没有。