我正在尝试使用 32feet 库从我的移动设备上读取联系人,当我尝试时,我遇到了错误的请求错误。该设备与我的应用程序配对。这是我的代码:
var item = (BluetoothDeviceInfo)listBox.SelectedItem;
Task.Run(() =>
{
item.Update();
item.Refresh();
item.SetServiceState(BluetoothService.PhonebookAccess, true);
if (OBEXOpenStream(item.DeviceAddress.ToString()))
{
if (OBEXConnect())
{
string tName = "";
string tType = "text/x-vCard";
string tFileContent = "";
int result = OBEXRequest("GET", tName, tType, tFileContent);
item.ShowDialog();
}
}
OBEXCloseStream();
});
我不知道是否有其他方法可以使用OBEX获取联系人。
答案 0 :(得分:0)
当您必须为请求发送空名称标头时,可能是您犯了一个错误。变量tName
应为null
而非""
,因为""
为0x00
,以字节为单位,而非空名称标头。该库会将名称标题的大小发送为0x0004
,而不是0x0003
,这是您的vCard请求所必需的。这是一个常见的错误,我也提交了它:)
或强>
为什么要提供tFileContents
参数?据我所知,没有必要。您可能必须删除该参数。根据IRDA规范,不需要它。
抱歉英语不好,我希望这个答案有很多帮助。