在 C# 中接收 Web 服务中的请求?
receive requests in web servce rest in c #?
我有一个 Web 服务 api VS 中的 C#(基本)rest 项目,我编写了一个 POST 目前什么都不做的方法,它只验证信息是否到达或我认为确实如此,我想知道的是:当我从客户端程序发送 Json 链时,能够调试从我的 Web 服务发送的请求的接收。
我想看看我的请求是如何到达的。
Web 服务是使用 Visual Studio 中示例的模板制作的,上面写着 web API fullRest,添加 controllers 文件夹,其中 POST 和 GET 方法我的网络服务位于。基本上我的项目很基础,一切都是模板编程,我只是添加了方法。
这是我的 Web 服务 rest 中 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 服务的时间点,或者我如何编写一种方法让耐心到达 Web 服务并能够查看请求是如何到达的。
谢谢。
那个请求可能不会到达,因为你告诉服务器路由是 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/“添加服务参考”的日子一样(除了在那些日子里它更容易和更可靠)
我有一个 Web 服务 api VS 中的 C#(基本)rest 项目,我编写了一个 POST 目前什么都不做的方法,它只验证信息是否到达或我认为确实如此,我想知道的是:当我从客户端程序发送 Json 链时,能够调试从我的 Web 服务发送的请求的接收。 我想看看我的请求是如何到达的。
Web 服务是使用 Visual Studio 中示例的模板制作的,上面写着 web API fullRest,添加 controllers 文件夹,其中 POST 和 GET 方法我的网络服务位于。基本上我的项目很基础,一切都是模板编程,我只是添加了方法。
这是我的 Web 服务 rest 中 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 服务的时间点,或者我如何编写一种方法让耐心到达 Web 服务并能够查看请求是如何到达的。 谢谢。
那个请求可能不会到达,因为你告诉服务器路由是 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/“添加服务参考”的日子一样(除了在那些日子里它更容易和更可靠)