HttpClient SyncPost returns 'Web Service method name is not valid'
HttpClient SyncPost returns 'Web Service method name is not valid'
我对 REST API 的东西绝对是新手,我尝试为服务器制作一个 POST 和 XML 主体。服务器没问题(对于不同的 GET 调用,我可以获得一些响应),但是当我尝试进行 POST 时,我得到 'method name is not valid'。我看不出有什么问题...
这是我的部分代码 (C#):
string post_body = "<?xml version=\"1.0\" encoding=\"utf-8\"?> " +
"<mark> " +
$"<idMark>{idMark}</idMark> " +
$"<idClipLog>{idClipLog}</idClipLog> " +
$"<freeDescription>{freeDescription}</freeDescription> " +
$"<tcOut>{tcOut}</tcOut> " +
$"<tcIn>{tcIn}</tcIn> " +
"<clipLogOperator> " +
$"<OperatorName>{operatorName}</OperatorName>" +
"</clipLogOperator>" +
"<clipLogLayer>" +
$"<layerName>{layerName}</layerName>" +
"</clipLogLayer>" +
"<markKeyword>" +
$"<idMark>{idMKMark}</idMark>" +
$"<idMarkKeyword>{idMarkKeyword}</idMarkKeyword>" +
$"<keyword>{keyword}</keyword>" +
"</markKeyword>" +
"</mark>";
var httpContent = new StringContent(post_body);
var requestUri = $"VideoTags.asmx/CreateMark";
var response = _httpClient.PostAsync(requestUri, httpContent).Result;
if (!response.IsSuccessStatusCode)
{
var xmldata = response.Content.ReadAsStringAsync();
var xmlSerializer = new XmlSerializer(typeof(cExtendedSessionsResult));
using (StringReader reader = new StringReader(xmldata.Result))
{
try
{
var logIdResp = (cExtendedSessionsResult)xmlSerializer.Deserialize(reader);
}
catch
{
throw new Exception($"[E04071035] Error in CreateMark [{_server}]");
}
}
}
可能正文内容有问题?我需要在 POST 正文中传递 XML。我从 XML 创建 StringContent 并传递给 PostAsync 调用。这是正确的吗?
HttpClient 似乎有正确的 BaseAddress(正如我之前所说,我能够调用一些 get 函数)。
提前致谢!
非常感谢大家!最后我可以与提供者交谈,这似乎是 API 接口规范中的一个错误。
再次感谢!
我对 REST API 的东西绝对是新手,我尝试为服务器制作一个 POST 和 XML 主体。服务器没问题(对于不同的 GET 调用,我可以获得一些响应),但是当我尝试进行 POST 时,我得到 'method name is not valid'。我看不出有什么问题...
这是我的部分代码 (C#):
string post_body = "<?xml version=\"1.0\" encoding=\"utf-8\"?> " +
"<mark> " +
$"<idMark>{idMark}</idMark> " +
$"<idClipLog>{idClipLog}</idClipLog> " +
$"<freeDescription>{freeDescription}</freeDescription> " +
$"<tcOut>{tcOut}</tcOut> " +
$"<tcIn>{tcIn}</tcIn> " +
"<clipLogOperator> " +
$"<OperatorName>{operatorName}</OperatorName>" +
"</clipLogOperator>" +
"<clipLogLayer>" +
$"<layerName>{layerName}</layerName>" +
"</clipLogLayer>" +
"<markKeyword>" +
$"<idMark>{idMKMark}</idMark>" +
$"<idMarkKeyword>{idMarkKeyword}</idMarkKeyword>" +
$"<keyword>{keyword}</keyword>" +
"</markKeyword>" +
"</mark>";
var httpContent = new StringContent(post_body);
var requestUri = $"VideoTags.asmx/CreateMark";
var response = _httpClient.PostAsync(requestUri, httpContent).Result;
if (!response.IsSuccessStatusCode)
{
var xmldata = response.Content.ReadAsStringAsync();
var xmlSerializer = new XmlSerializer(typeof(cExtendedSessionsResult));
using (StringReader reader = new StringReader(xmldata.Result))
{
try
{
var logIdResp = (cExtendedSessionsResult)xmlSerializer.Deserialize(reader);
}
catch
{
throw new Exception($"[E04071035] Error in CreateMark [{_server}]");
}
}
}
可能正文内容有问题?我需要在 POST 正文中传递 XML。我从 XML 创建 StringContent 并传递给 PostAsync 调用。这是正确的吗?
HttpClient 似乎有正确的 BaseAddress(正如我之前所说,我能够调用一些 get 函数)。
提前致谢!
非常感谢大家!最后我可以与提供者交谈,这似乎是 API 接口规范中的一个错误。
再次感谢!