无法理解POST请求格式

时间:2015-12-04 10:43:01

标签: c# rest webrequest

这些是本文https://developer.amazon.com/public/apis/experience/cloud-drive/content/nodes

中的内容

我想使用此解释来上传视频

上传文件 上传文件内容及其元数据信息。

POST:{{contentUrl}} / nodes?suppress = {suppress}

抑制:(可选)

重复数据删除:禁止在上传时检查重复项 身体参数:

多表格部分

--------- metadata ------------

name(必填):文件名。最多256个字符。 善意(必填):"文件" 标签(可选):索引的额外信息。例如,值可以是" PHOTO" properties(可选):要为文件添加的属性列表。 parent(可选):父ID列表。如果未提供父文件夹,则该文件将放在默认的根文件夹中。 ---------内容------------

文件字节

示例请求

POST / cdproxy / nodes?localId = testPhoto HTTP / 1.1 主持人:content-na.drive.amazonaws.com 授权:持票人 AtzA的| IQEBLjAsAhReYeezFcFdYzqrFOJGv3EG

---- WebKitFormBoundaryE19zNvXGzXaLvS5C 内容处理:表格数据;命名="元数据"

{"名称":" fooo.jpg""种类":" FILE"} ---- WebKitFormBoundaryE19zNvXGzXaLvS5C 内容处理:表格数据;命名="内容&#34 ;; 文件名=" db5df4870e4e4b6cbf42727fd434701a.jpg" 内容类型:image / jpeg

---- WebKitFormBoundaryE19zNvXGzXaLvS5C

cURL请求:

卷曲-v -X POST - 形成 '元数据= {"名称":" testVideo1""种类":" FILE"}' - 形成 ' content=@sample_iTunes.mp4' ' https://content-na.drive.amazonaws.com/cdproxy/nodes?localId=testVideo1&suppress=deduplication' - 标题"授权:持票人 AtzA的| IQEBLjAsAhQ5zx7pKp9PCgCy6T1JkQjHHOEzpwIUQM"

我在c#中编写了以下代码 // FileName 1:来自计算机的文件 // FileName 2:要在亚马逊云上命名的文件。

   if (AccessCode == null)
        {
            return ;
        }
        WebRequest request =                 WebRequest.Create(EndPointUrl+"//+&suppress=deduplication'");
        request.Method = "POST";
        string code = "Bearer " + AccessCode;
        request.Headers.Add("Authorization", code);
        string postData =@"Content-Disposition: form-data; name=""metadata""   {""name"":"""+FileName1+@""",""kind"":""+FILE""}
        Content-Disposition: form-data; name=""content"";
        filename="""+FileName2+@"""
        Content-Type: video/wmv";
        byte[] byteArray = Encoding.UTF8.GetBytes(postData);
        request.ContentType = "application/x-www-form-urlencoded";
        request.ContentLength = byteArray.Length;
        Stream dataStream = request.GetRequestStream();
        dataStream.Write(byteArray, 0, byteArray.Length);
        dataStream.Close();
        WebResponse response = request.GetResponse();
        Console.WriteLine(((HttpWebResponse)response).StatusDescription);
        dataStream = response.GetResponseStream();
        StreamReader reader = new StreamReader(dataStream);
        string responseFromServer = reader.ReadToEnd();
        Console.WriteLine(responseFromServer);
        reader.Close();
        dataStream.Close();
        response.Close();        

问题是我无法正确翻译。它给出了404错误。

  

{" message":"资源不存在。"}

请帮助我理解它。

1 个答案:

答案 0 :(得分:1)

它是一个正常的multipart/form-data POST请求,第一个参数值是Stringified JSON对象,第二个是图像文件。

请查看:Upload files with HTTPWebrequest (multipart/form-data)

然后你可以

NameValueCollection nvc = new NameValueCollection();
nvc.Add("metadata", "{\"name\":\"fooo.jpg\",\"kind\":\"FILE\"}");
HttpUploadFile("THE_URL_HERE", @"C:\test\fooo.jpg", "content", "image/jpeg", nvc);