我在创建POST JOB(用于在OSS中进行翻译的文件注册的新名称)时遇到问题。我已经使用段上传将ZIP文件上传到存储桶(包含2个revit文件,第一个是root,第二个是revitlink),现在我想要触发转换为SVF。为了这个目的,我使用这段代码(使用Restharp,Newtonsoft.Json):上述模型衍生API - SVF POST作业始终返回400 - 请求正文不是有效的json
public void CreatePostJOB(string serviceUrl, string urn, string rootFile, string token)
{
try
{
RestClient client = new RestClient(serviceUrl);
RestRequest request = new RestRequest();
request.Method = Method.POST;
request.Resource = "modelderivative/v2/designdata/job";
request.RequestFormat = DataFormat.Json;
request.AddParameter("Authorization", "Bearer " + token, ParameterType.HttpHeader);
request.AddParameter("x-ads-force", true);
request.AddParameter("Content-Type", "application/json");
JObject jsonbody = new JObject
(
new JProperty("input", new JObject
(
new JProperty("urn", urn),
new JProperty("compressedUrn", true),
new JProperty("rootFileName", rootFile)
)),
new JProperty("output", new JObject
(
new JProperty("formats", new JArray
(
new JObject
(
new JProperty("type", "svf"),
new JProperty("views", new JArray("3d", "2d"))
)
))
))
);
string post = jsonbody.ToString(Formatting.Indented);
request.AddParameter("application/json", post, ParameterType.RequestBody);
IRestResponse resp = client.Execute(request);
if (resp.StatusCode == HttpStatusCode.OK)
{
//TODO
}
}
catch (Exception ex)
{
//TODO
}
}
代码将产生以下JSON到交变量:
{
"input": {
"urn": "/*urn base64 string with no padding*/",
"compressedUrn": true,
"rootFileName": "MainModel_A.rvt"
},
"output": {
"formats": [
{
"type": "svf",
"views": [
"3d",
"2d"
]
}
]
}
否我怎么改变这段代码的结果总是一样的:
{"diagnostic":"Request body is not a valid json"}
我也尝试使用普通的C#WebRequest结果相同。也许有一个错误,因为来自同一个API的其他调用可以像restsharp一样使用。请如何在C#中创建一个有效的岗位工作?
我改变AddParameter调用AddHeader和结果错误保持400 - 巴德请求,只有错误消息更改为:“无法触发此文件的翻译。”很难说如果使用可恢复上传的事实会影响这一点。 – JadaVonRuth
这意味着翻译不能正常工作... JSON请求没问题。你是否在使用一个带有所有.rvt的.zip文件?你能添加更多信息吗? –
也注意到您的原始代码使用compressedUrn = true,这意味着它是一个带有所有.rvt文件的.zip文件。是这样吗?如果你只有一个.rvt,只需通过它的瓮。 –