Asp.net 使用XML从VS2019中的控制台应用程序调用简单POST API
我已转介有关人士。但是,需要在post中传递XML方法,而不是JSON。有什么建议吗Asp.net 使用XML从VS2019中的控制台应用程序调用简单POST API,asp.net,visual-studio,http,web-services,post,Asp.net,Visual Studio,Http,Web Services,Post,我已转介有关人士。但是,需要在post中传递XML方法,而不是JSON。有什么建议吗 static async Task Main(string[] args) { var TicketTask = await createTicket(); } async static Task<string> createTicket() { var content = "unknown error";
static async Task Main(string[] args)
{
var TicketTask = await createTicket();
}
async static Task<string> createTicket()
{
var content = "unknown error";
using (var httpClient = new System.Net.Http.HttpClient())
{
using (var request = new System.Net.Http.HttpRequestMessage(new HttpMethod("POST"), "http://1.0.01.1/slive/"))
{
try
{
var base64authorization = Convert.ToBase64String(Encoding.ASCII.GetBytes("username:password"));
request.Headers.TryAddWithoutValidation("Authorization", $"Basic {base64authorization}");
request.Content = new StringContent("<soapenv:Envelope xmlns:xsi...", Encoding.UTF8, "application/xml"); ????? need to post a xml method here
request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("text/xml");
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
HttpResponseMessage response = await httpClient.SendAsync(request).ConfigureAwait(false);
content = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
Console.WriteLine(response);
}
catch (Exception ex)
{
content = ex.Message;
}
}
}
return content;
static async Task Main(字符串[]args)
{
var TicketTask=wait createTicket();
}
异步静态任务createTicket()
{
var content=“未知错误”;
使用(var httpClient=new System.Net.Http.httpClient())
{
使用(var request=new System.Net.Http.HttpRequestMessage(new-HttpMethod(“POST”),”http://1.0.01.1/slive/"))
{
尝试
{
var base64authorization=Convert.ToBase64String(Encoding.ASCII.GetBytes(“用户名:密码”);
request.Headers.TryAddWithoutValidation(“Authorization”,$“Basic{base64authorization}”);
request.Content=new StringContent(找到了解决方案,如果有更好的方法,请纠正我:
async static Task<string> createTicket2()
{
var content = "unknown error";
using (var httpClient = new System.Net.Http.HttpClient())
{
using (var request = new System.Net.Http.HttpRequestMessage(new HttpMethod("POST"), "http://10/sap-lve/"))
{
try
{
var base64authorization = Convert.ToBase64String(Encoding.ASCII.GetBytes("an:s"));
request.Headers.TryAddWithoutValidation("Authorization", $"Basic {base64authorization}");
String str1 = @"<s:Envelope xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'><s:Body><Get_api_version xmlns='http://e.s.a.com'/></s:Body></s:Envelope>";
**request.Content = new StringContent(str1, Encoding.UTF8, "text/xml");** ;
request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("text/xml");
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
HttpResponseMessage response = await httpClient.SendAsync(request).ConfigureAwait(false);
content = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
//Console.WriteLine(response);
var result = response.Content.ReadAsStringAsync();
Console.WriteLine(result.Result);
}
catch (Exception ex)
{
content = ex.Message;
}
}
}
return content;
}
异步静态任务createTicket2()
{
var content=“未知错误”;
使用(var httpClient=new System.Net.Http.httpClient())
{
使用(var request=new System.Net.Http.HttpRequestMessage(new-HttpMethod(“POST”),”http://10/sap-lve/"))
{
尝试
{
var base64authorization=Convert.ToBase64String(Encoding.ASCII.GetBytes(“an:s”);
request.Headers.TryAddWithoutValidation(“Authorization”,$“Basic{base64authorization}”);
字符串str1=@”;
**request.Content=newstringcontent(str1,Encoding.UTF8,“text/xml”);**;
request.Content.Headers.ContentType=MediaTypeHeaderValue.Parse(“text/xml”);
ServicePointManager.Expect100Continue=true;
ServicePointManager.SecurityProtocol=SecurityProtocolType.Tls12;
HttpResponseMessage response=await httpClient.SendAsync(请求).ConfigureAwait(错误);
content=await response.content.ReadAsStringAsync().ConfigureAwait(false);
//控制台写入线(响应);
var result=response.Content.ReadAsStringAsync();
Console.WriteLine(result.result);
}
捕获(例外情况除外)
{
内容=例如消息;
}
}
}
返回内容;
}
如果你可以试着问一个更具体的问题,并提供更多关于你所尝试的内容的详细信息,而不是大量的代码。例如,你发布的代码不起作用了吗?你遇到了什么错误?你已经尝试了什么?最后,发布这么大的代码块是没有帮助的,因为大部分代码都不起作用与您的问题完全相关。当然,在上面的示例(SOAP调用)中,正文是以JSON格式发送的,而不是我们在Postman中使用的XML。我已经在ASP.NET Core中创建了一个控制台应用程序来复制Postman。需要关于如何在正文中传递XML而不是JSON的建议。谢谢