POST /LAPI/V1.0/PACS/Controller/HeartReportInfo HTTP/1.1
Content-Type: application/json
Content-Length: 180
{
"RefId": "3d519d30-af08-4654-919f-3488a9ef9b68",
"Time": "2020-05-26 16:08:54",
"NextTime": "2020-05-26 16:09:24",
"DeviceCode": "13110201011197001001",
"DeviceType": 5
}
这是设备发送的整个请求的内容,我写了一个对应的接口去接收,完全接收不到, 用postman测试我的接口,没有问题.
接口用.net core 写的
[Route("LAPI/V1.0/PACS/[controller]/[action]")]
[ApiController]
public class ControllerController : ControllerBase
{
[HttpGet]
[HttpPost]
public string HeartReportInfo()
{
StreamReader sr = new StreamReader(Request.Body);
Task<string> task = sr.ReadToEndAsync();
if(task.Result!=null)
{
Console.WriteLine(task.Result);
}
else
{
Console.WriteLine("数据为空");
}
return "ok";
}
}
设备发送到HTTP中的host头部呢?是你调试的进程的IP和端口吗?
他没有host头…就这么两行,我也不知道该咋接收了,我这信息是通过socket接回来的
@百鸟朝凤: 那就奇怪了,没有host头的话就不是一个正常的HTTP请求。你这个HTTP请求从哪得来的?设备打印的log?还是你在本机抓包的结果?
@blackheart: 我写了一个tcp socket,然后把接收的信息打印,就是这些东西。
@百鸟朝凤: 那就进一步抓包看一下吧(tcpdump或者Wireshark),看看原始的请求的信息是什么,也可以核对下ip和端口。
@blackheart: 嗯,我再试试不行的话,我就当是个socket连接,去解析他的内容
public string HeartReportInfo([FromBody] dynamic Postdata)
{
string Id = Postdata["Id"];获取Id
}
把Id改成你传的参数,core接受body里面的值是要加FromBody
还没有到这一步呢,现在是这个请求,我的接口根本接收不到。
获取内容,它是整个body体是一个json串发送过来的,我这种写法只是为了看接收的内容是什么
@百鸟朝凤:
using (var reader = new StreamReader(Request.Body))
{
var body = await reader.ReadToEndAsync();
}
那试试这种写法
@尚公子: 不是写法的问题,现在是调试的时候根本不走这个方法
这是java写的netty....