C# .NET核心API,如何使用“;内容类型”;用于‘;text/xml’;在联邦快递追踪API的HTTP帖子中
我想通过提交如下SOAP请求来进行Fedex跟踪API调用。 联邦快递网络服务最佳实践告诉我们,方法是HTTPPOST,内容类型应该是'text/xml' 我找不到任何相关的代码示例 我尝试了下面的代码。如果是HttpPost方法,则不进行调用。当我尝试使用HttpGet方法时,至少进行了调用并抛出错误C# .NET核心API,如何使用“;内容类型”;用于‘;text/xml’;在联邦快递追踪API的HTTP帖子中,c#,.net,api,asp.net-core,fedex,C#,.net,Api,Asp.net Core,Fedex,我想通过提交如下SOAP请求来进行Fedex跟踪API调用。 联邦快递网络服务最佳实践告诉我们,方法是HTTPPOST,内容类型应该是'text/xml' 我找不到任何相关的代码示例 我尝试了下面的代码。如果是HttpPost方法,则不进行调用。当我尝试使用HttpGet方法时,至少进行了调用并抛出错误 [Produces("application/json", "application/xml")] [Route(&quo
[Produces("application/json", "application/xml")]
[Route("api/fedex")]
[ApiController]
public class FedexController : BaseController
{
private readonly IConfiguration _config;
public const SslProtocols _Tls12 = (SslProtocols)0x00000C00;
public const SecurityProtocolType Tls12 = (SecurityProtocolType)_Tls12;
public FedexController(IConfiguration config)
{
ServicePointManager.SecurityProtocol = Tls12;
_config = config;
}
[HttpGet]
[Route("GetFedexTrackingStatus/{trackingNumber}")]
public IActionResult GetFedexTrackingStatus(int trackingNumber)
{
try
{
string url = "https://wsbeta.fedex.com:443/web-services/track";
HttpClient client = new HttpClient();
string str1 = @"<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:v16='http://fedex.com/ws/track/v16'>
<soapenv:Header/>
<soapenv:Body>
<v16:TrackRequest>
<v16:WebAuthenticationDetail>
<v16:UserCredential>
<v16:Key>XXXXXX</v16:Key>
<v16:Password>XXXXXX</v16:Password>
</v16:UserCredential>
</v16:WebAuthenticationDetail>
<v16:ClientDetail>
<v16:AccountNumber>XXXXXX</v16:AccountNumber>
<v16:MeterNumber>XXXXXX</v16:MeterNumber>
</v16:ClientDetail>
<v16:TransactionDetail>
<v16:CustomerTransactionId>TrackByNumber_v16</v16:CustomerTransactionId>
<v16:Localization>
<v16:LanguageCode>EN</v16:LanguageCode>
<v16:LocaleCode>US</v16:LocaleCode>
</v16:Localization>
</v16:TransactionDetail>
<v16:Version>
<v16:ServiceId>trck</v16:ServiceId>
<v16:Major>16</v16:Major>
<v16:Intermediate>0</v16:Intermediate>
<v16:Minor>0</v16:Minor>
</v16:Version>
<v16:SelectionDetails>
<v16:CarrierCode>FDXE</v16:CarrierCode>
<v16:PackageIdentifier>
<v16:Type>TRACKING_NUMBER_OR_DOORTAG</v16:Type>
<v16:Value>192221280879</v16:Value>
</v16:PackageIdentifier>
<v16:PagingDetail></v16:PagingDetail>
<v16:SecureSpodAccount/>
<v16:Destination>
</v16:Destination>
</v16:SelectionDetails>
</v16:TrackRequest>
</soapenv:Body>
</soapenv:Envelope>";
HttpContent content = new StringContent(str1, Encoding.UTF8, "text/xml");
var response = client.PostAsync(url, content);
var result = response.Result.Content.ReadAsStringAsync();
return StatusCode(200, result.Result);
}
catch (Exception ex)
{
return StatusCode(500, "Error");
}
}
}
有人打过这些SOAPRequest电话吗?如何将XML作为输入传递
谢谢您的XML中有一些您可能不想发布的信息。贴出了答案。谢谢。我清除了它。您的XML中有一些您可能不想发布的信息。贴出了答案。谢谢。我清除了它。
"<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\"><SOAP-ENV:Header/><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring xml:lang=\"en\">Fault</faultstring><detail><cause>UnrecoverableClientError</cause><code>SchemaError</code><desc>validation failure for TrackRequest Error:cvc-complex-type.2.4.a: Invalid content was found starting with element 'v16:SecureSpodAccount'. One of '{\"http://fedex.com/ws/track/v16\":CustomerSpecifiedTimeOutValueInMilliseconds, \"http://fedex.com/ws/track/v16\":ResponseFormat}' is expected.</desc></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>"