上传视频到优酷服务器时出错,求高手指点迷津~

solicice solicice 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在优酷的上传视频API中(WINFORM),要执行一系列的操作,前面已陆续测试成功,现在在一个叫“upload_slice”的API中需要传递二进制数据,他的API具体说明如下:

upload_slice

InterfacePOST http://gX.upload.youku.com/gupload/upload_slice?< .. parameters .. >
< .. BINARY DATA .. >

Parameters

upload_token: string, MUST provide.

slice_task_id: int, MUST provide. the slice upload task ID.

offset: int64, MUST provide. the offset in the source file.

length: int, MUST provide. the data length.

crc: string, CRC32 of the data slice in hex string. default is empty string (””).

hash: string, MD5 of the data slice in hex string. default is empty string (””).

data: binary.

Note: One of CRC or HASH is recommented for error testing and slice re-uploading.

Return Value

error: object. Only returned when error occured.

code: int.

type: string.

description: string.

slice_task_id: int, MUST provide. the next slice upload task ID.

offset: int64, MUST provide. the offset of the next slice in the source file to upload.

length: int, MUST provide. the data length of the next slice to upload.

transferred: int64. the data length that already uploaded.

finished: boolen, whether or not the file is totally uploaded.

Error Codes

120010205 - Invalid upload session id

120010212 - Internal error: memory error

120010218 - CRC check error

120010219 - Resource unavailable

120010221 - Duplicated operation

120010224 - Bad request

120010225 - Hash check error

See Error Definition for full list of error definitions.

Sample (for demo only; layout for ease of reading)
POST /gupload/upload_slice?upload_token=1a2b3c4d
&slice_task_id=1328792850123
&offset=12345678
&length=12345
&crc=dfc6f27b
Host: g01.upload.youku.com

< .. BINARY DATA .. >

----

201 Created

{ "slice_task_id": 1328793281567,
"offset": 12358023,
"length": 12345,
"transferred": 12358023,
"finished": false }


现在的问题是,如果把包含“文本”和二进制数据的内容一起POST到服务器?
难道是把2部分分开再合并起来发送?如我下面的代码所示:

   /// <summary>
/// 合并数组
/// </summary>
/// <param name="first"></param>
/// <param name="second"></param>
/// <returns></returns>
private byte[] mergerArray(byte[] first, byte[] second)
{
byte[] result = new byte[first.Length + second.Length];
first.CopyTo(result, 0);
second.CopyTo(result, first.Length);
return result;
}

private void btn_upload_slice_Click(object sender, EventArgs e)
{
//upload_slice
byte[] data2 = File.ReadAllBytes(file_name);

Encoding encoding = Encoding.UTF8;

uint crc = my_CRC32.CalculateDigest(data2, (uint)0,length);
//MessageBox.Show(crc.ToString());
string postData = "upload_token=" + upload_token + "\r\n";
postData += ("&slice_task_id=" + slice_task_id + "\r\n");
postData += ("&offset=" + offset + "\r\n");
postData += ("&length=" + length + "\r\n");
postData += ("&crc=" + crc + "\r\n");
//postData += ("&data=" + "\r\n");
//MessageBox.Show(postData);

//postData += File.ReadAllBytes(file_name)+ "\r\n";

byte[] data = encoding.GetBytes(postData);

string content = ZdSoft.Framework.Helper.HttpRequest.DoPostRequest("http://g" +
gX + ".up.youku.com/gupload/upload_slice",
mergerArray(data, data2), 1);
//MessageBox.Show(content);
btn_upload_slice.Enabled = false;
}


其中,ZdSoft.Framework.Helper.HttpRequest.DoPostRequest是我自己的类,发送POST请求的,mergerArray是合并数组数据用的,但是服务器一直返回400,我要怎么解决?求高手指点!
...全文

相关推荐

评论 1
收藏 已收藏
分享
返回顶部
solicice
OpenAPI 2,245 成员 699 内容