在 c# 中接收 web 服务中的请求?
Posted
技术标签:
【中文标题】在 c# 中接收 web 服务中的请求?【英文标题】:receive requests in web servce rest in c #? 【发布时间】:2021-01-06 06:31:37 【问题描述】:我在 VS 中用 C#(基本)编写了一个 Web 服务 api rest 项目,我编写了一个目前什么都不做的 POST 方法,它只验证信息是否到达或者我认为它确实有,我想要什么知道的是:当我从客户端程序发送 Json 链时,能够调试从我的 Web 服务发送的请求的接收。 我想看看我的请求是如何到达的。
Web 服务是使用 Visual Studio 中作为示例提供的模板创建的,其中显示 Web API fullRest,添加我的 Web 服务的 POST 和 GET 方法所在的控制器文件夹。基本上我的项目很基础,一切都是模板编程的,我只是添加了方法。
这是我的网络服务休息中 POST 方法的代码:
[Route("api/prueba")]
[HttpPost]
public HttpResponseMessage Post([FromBody] datosTarjeta datoTarjeta )
try
if (datoTarjeta != null)
var respuesta = new HttpResponseMessage(HttpStatusCode.OK);
return respuesta;
catch (Exception ex)
var respuesta = new HttpResponseMessage(HttpStatusCode.BadRequest);
return respuesta;
var respuesta1 = new HttpResponseMessage(HttpStatusCode.BadRequest);
return respuesta1;
这是将 Json 字符串发送到 Web 服务的代码,它在 VB.net 中,它发送一个 Json 字符串:
Imports System
Imports System.Net
Imports System.Text
Imports System.Threading
Imports Newtonsoft.Json
Public Async Sub metodoPost()
Dim t As New datosTarjeta
t.Ln_Tarj = "PRO1"
t.Fiid_Tarj = "B062"
t.Numero_de_tarjeta = "5359430105739184 "
Try
Dim url As String
url = "http://localhost:60973/api/rest"
Dim cliente As New Http.HttpClient
Dim JsonData As String = JsonConvert.SerializeObject(t)
Dim restContenido As New Http.StringContent(JsonData, Encoding.UTF8, "application/json")
Dim restRespuesta As Http.HttpResponseMessage = Await cliente.PostAsync(url, restContenido)
Thread.Sleep(200000)
Console.WriteLine(restRespuesta.StatusCode.ToString)
Catch e As Exception
Dim mensaje As String
mensaje = e.Message
End Try
End Sub
如果您能帮助我了解请求在什么时间点到达 Web 服务,或者我可以如何编写一个方法让 Paticion 到达 Web 服务并能够查看请求是如何到达的。 谢谢。
【问题讨论】:
你想了解路由吗? 【参考方案1】:那个请求可能不会到达,因为你告诉服务器路由是api/prueba
:
[Route("api/prueba")]
[HttpPost]
public HttpResponseMessage Post([FromBody] datosTarjeta datoTarjeta )
在您发布到api/rest
的客户端中
url = "http://localhost:60973/api/rest"
首先,我建议您不要尝试编写客户端和服务器。只需编写服务器,然后使用 Postman 用数据戳它,检查它是否有效。然后编写客户端。与您自己的客户端错误作斗争以及尝试使其配置正确是您不需要的头痛。 Postman 是一个可靠的工具,是一个很好的工具,可以将 JSON 发送到 RESTful webserviecs,就像你在这里一样。在 Post 方法的顶部设置一个断点(将其称为其他名称,例如......它的作用:UpdateUser、CreateOrder、ChangeShippingAddress 等)然后将 url 和数据放入 postman 并点击 Go;您的服务器代码应该会中断,您可以单步执行它
然后你就可以写你的客户端了;输入相同的 url 和数据,点击 Go..
您可以通过将 Swashbuckle、Swagger-Net 或 NSwag 包添加到您的服务器,然后使用 VS 中的 Add REST Client
功能或 AutoRest 工具(或者,显然 NSwag 生成客户端代码也是)..
所有这些“通过手工制作 HTTP 请求来创建客户端”——无聊、重复等等;您没有在服务器端“手动接收和解析 HTTP 请求”,那么为什么不让技术也为您编写客户端; swagger 以标准方式描述服务,这意味着另一个工具可以使用描述并编写具有良好命名方法等的客户端代码
这就像过去的 WCF/ASMX/SOAP/XML/“添加服务引用”(除了那些日子它更容易和更可靠)
【讨论】:
以上是关于在 c# 中接收 web 服务中的请求?的主要内容,如果未能解决你的问题,请参考以下文章
C# Rest 服务 - 无法在服务方法中接收 JSON 请求
从 C# .NET Core(特别是 Workday)调用 Java Web 服务。如何在soap请求中获取xml属性