c# - 如何将 DTO 传递给 vb.net 中的 Rest API?
问题描述
我在一个需要 DTO 对象的应用程序(用 c# 编写)中有一个 API 方法
public IActionResult SaveProviderToOmitFromDto(RadiologyBillingProvidersToOmitDto dto)
{
mProvidersToOmitService.SaveFromDto(dto);
return Ok();
}
我需要在较旧的 vb.net 应用程序中传递 DTO 对象。到目前为止,我有一个 sub 来传递 URL 和 DTO:
Public Shared Sub SaveProviderToOmit(ProviderToOmit As ProvidersToOmitDto)
Dim Url = String.Format("{0}RadiologyBilling/SaveProviderToOmitFromDto", Settings.GetApiUrlStart)
API.SaveProviderToOmitFromDto(Url, PatchMethod, ProviderToOmit)
End Sub
以及另一种“修补” DTO 的方法
Public Shared Sub SaveProviderToOmitFromDto(Url As String, Method As String, ProviderToOmit As ProvidersToOmitDto)
Dim Provider = JsonConvert.SerializeObject(ProviderToOmit)
Dim Request = GetRequest(Url, Method, Provider.Length)
Request.GetResponse().Close()
End Sub
Private Shared Function GetRequest(Url As String, Method As String, ContentLength As Integer) As WebRequest
Dim Request = WebRequest.Create(Url)
Request.Method = Method
Request.ContentLength = ContentLength
Request.ContentType = "application/json"
Return Request
End Function
如何将 DTO 对象传递给 API?我预计需要序列化对象,但如何在请求中传递对象?
解决方案
我在 Stack Overflow 上找不到任何可以接受的答案的问题,但是这个没有接受答案的线程解决了 OPs 问题:
如何使用 VB.NET 将 JSON 发布到特定的 url?
Private Function SendRequest(uri As Uri, jsonDataBytes As Byte(), contentType
As String, method As String) As String
Dim response As String
Dim request As WebRequest
request = WebRequest.Create(uri)
request.ContentLength = jsonDataBytes.Length
request.ContentType = contentType
request.Method = method
Using requestStream = request.GetRequestStream
requestStream.Write(jsonDataBytes, 0, jsonDataBytes.Length)
requestStream.Close()
Using responseStream = request.GetResponse.GetResponseStream
Using reader As New StreamReader(responseStream)
response = reader.ReadToEnd()
End Using
End Using
End Using
Return response
End Function
使用此功能
Dim data = Encoding.UTF8.GetBytes(jsonSring)
Dim result_post = SendRequest(uri, data, "application/json", "POST")
推荐阅读
- ansible - 使用 ansible 角色和默认值启动服务
- c# - 如何将一个空游戏对象统一锚定在可拉伸图像内
- xml - 将图像注释 XML 文件转换为 TXT 文件
- javascript - 滚动到 id 时添加填充 -100px
- mysql - 使用 match 比较 2 个表
- python - 如何比较两个列表并在一个列表中打印差异
- python-3.x - datalab 导入错误:无法导入名称“视觉”
- javascript - 如何更改平板设备的环境?
- templates - 乳胶中的 Github 图标
- tensorflow - 如何在 TF 2.0 附带的 Tensorboard 中叠加两个图?