.NET MAUI Android中SSDP发现设备后无法获取XML描述文档
问题解答
1. Android或.NET MAUI是否存在阻止HTTP获取XML的固有限制?
是的,核心限制有两点:
- Android 9+明文HTTP拦截:Android 9(API 28)及以上默认禁止明文HTTP(非HTTPS)请求,若设备XML地址为
http://开头,会直接被拦截。解决方式:
在Android项目的Resources/xml目录创建network_security_config.xml:
然后在<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">192.168.0.0/16</domain> </domain-config> </network-security-config>AndroidManifest.xml的<application>标签中添加配置:android:networkSecurityConfig="@xml/network_security_config" - 权限缺失:必须在
AndroidManifest.xml中声明网络权限:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2. 当SSDP可用但XML获取失败时,有没有其他获取friendlyName的方法?
- 检查SSDP响应头:部分设备会在SSDP响应的
SERVER头中携带设备名称信息,可通过device.Server属性查看;也可遍历device.ResponseHeaders,确认是否有自定义扩展头包含设备名称。 - 手动调整HTTP请求参数:
- 替换主机名为IP:若
DescriptionLocation包含主机名,局域网内可能无法解析,直接提取SSDP响应中的IP地址构造请求URL。 - 添加指定User-Agent:部分UPnP设备要求特定的User-Agent才会响应,修改HttpClient请求头:
using var httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"); - 延长超时时间:设备响应较慢时,设置更长的超时:
httpClient.Timeout = TimeSpan.FromSeconds(10);
- 替换主机名为IP:若
3. 这是否是Rssdp库的限制,有没有其他可尝试的库?
Rssdp库存在对部分非标准UPnP设备的兼容性问题,比如XML解析格式不匹配、HTTP请求头设置不符合设备要求。可尝试:
- 手动实现SSDP流程:用
UdpClient发送M-SEARCH请求,解析响应获取LOCATION后手动发送HTTP请求,完全控制请求过程。示例片段:using var udpClient = new UdpClient(); udpClient.EnableBroadcast = true; var request = "M-SEARCH * HTTP/1.1\r\nHOST: 239.255.255.250:1900\r\nMAN: \"ssdp:discover\"\r\nMX: 3\r\nST: upnp:rootdevice\r\n\r\n"; var data = Encoding.ASCII.GetBytes(request); await udpClient.SendAsync(data, data.Length, new IPEndPoint(IPAddress.Parse("239.255.255.250"), 1900)); var response = await udpClient.ReceiveAsync(); var responseStr = Encoding.ASCII.GetString(response.Buffer); // 解析responseStr提取LOCATION头 - 其他UPnP库:比如
Upnp.NET、Open.Network.SSDP,这类库对不同设备的兼容性可能更好。
内容的提问来源于stack exchange,提问作者Matan Yamin
相关产品推荐
相关产品推荐

