尝试使用Azure媒体服务rest api。 (遵循教程:https://docs.microsoft.com/en-us/azure/media-services/media-services-rest-get-started)
一切正常,直到我尝试创建一个Job。发送与示例相同的请求(资产ID和令牌除外)并获得响应: 解析请求内容失败的原因是:确保仅使用由类型
定义的属性名称请求:
POST https://wamsdubclus001rest-hs.cloudapp.net/api/Jobs HTTP/1.1
Connection: Keep-Alive
Content-Type: application/json
Accept: application/json; odata=verbose
Accept-Charset: UTF-8
Authorization: Bearer token -> here i send real token
DataServiceVersion: 1.0;NetFx
MaxDataServiceVersion: 3.0;NetFx
x-ms-version: 2.11
Content-Length: 458
Host: wamsdubclus001rest-hs.cloudapp.net
{
"Name":"TestJob",
"InputMediaAssets":[
{
"__metadata":{
"uri":"https://wamsdubclus001rest-hs.cloudapp.net/api/Assets('nb%3Acid%3AUUID%3A5168b52a-68ed-4df1-bac8-0648ce734ff6')"
}
}
],
"Tasks":[
{
"Configuration":"Adaptive Streaming",
"MediaProcessorId":"nb:mpid:UUID:ff4df607-d419-42f0-bc17-a481b1331e56",
"TaskBody":"<?xml version=\"1.0\" encoding=\"utf-8\"?><taskBody><inputAsset>JobInputAsset(0)</inputAsset> <outputAsset>JobOutputAsset(0)</outputAsset></taskBody>"
}
]
}
响应:
{
"error":{
"code":"",
"message":{
"lang":"en-US",
"value":"Parsing request content failed due to: Make sure to only use property names that are defined by the type"
}
}
}
它似乎与__metadata属性有关。当我按照此处的说明进行操作时:Creating Job from REST API returns a request property name error,错误会发生变化:
"error":{
"code":"",
"message":{
"lang":"en-US",
"value":"Invalid input asset reference in TaskBody - "
}
}
}
不能弄清楚什么是错的,谢谢
答案 0 :(得分:1)
让我检查一下,但这可能是我过去遇到过的几个问题。
首先。将Accept和Content-Type标头都设置为: “application / json; odata = verbose”
接下来,仔细检查您实际上是否在元数据属性上使用长下划线字符。我遇到的问题是发送错误的下划线字符并且它与属性名称不匹配。
如果其中任何一个有帮助,请告诉我。
答案 1 :(得分:0)
似乎问题是关于“内容类型”。当我使用.net Core时,将Conent类型设置为“application / json; odata = verbose”并不容易。
1)尝试使用RestSharp - dosnt支持它,它将“odata = verbose”部分删掉
2)尝试使用Systsem.Net.Http.HttpClient - &gt;可能但很难。 将其添加为“接受”:
SELECT * FROM table1 WHERE id = 1
UNION ALL
SELECT * FROM table2 WHERE id = 1
将其添加为“内容类型”:
MediaTypeWithQualityHeaderValue mtqhv;
MediaTypeWithQualityHeaderValue.TryParse("application/json;odata=verbose", out mtqhv);
client.DefaultRequestHeaders.Accept.Add(mtqhv);//ACCEPT header