我正在尝试使用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服务调用正确列出了所有配置的存储桶。
如果我在这里还有其他任何东西,请告诉我。
答案 0 :(得分:0)
好的,问题是我没有将整个xml传输到wireshark跟踪所显示的内容。一旦我修好了,问题就消失了。
顺便说一句......用一个\来逃避引号但是& “;没有。