python - 使用 Outlook Rest api 更新联系人时出现“不支持 OData 请求”错误
问题描述
我正在尝试使用 Outlook Rest API 在线更新联系人以进行交换。我可以使用帖子创建联系人。我还测试了工作正常的补丁。也就是说,当我发送PUT
请求时它不起作用。
所以这是我的代码:
def update_contacts():
# / ContactsFolders/{folder_id}/contacts
contact_id = "AAMkADAzNTg5ZjFmLWI2OTItNDFiOC1iNzg5LTNmOTJmOGUxYmUxNwBGAAAAAABMzp004WaZQqK4q_HRlSK9BwAqlNNaGOnjR7gnbsbOcpkFAAJm6kCDAAAqlNNaGOnjR7gnbsbOcpkFAAJm6m_3AAA="
url = "https://outlook.office365.com/api/v2.0/users('{email_id}')/contacts/{contact_id}"
#data = {"GivenName": "C1_Updated_put", "DisplayName": "MyRestApiContactFolder1"}
data = {
"Categories": [],
"Birthday": None,
"FileAs": "",
"DisplayName": "MyRestApiContactFolder1",
"GivenName": "C1_Using_Put",
"Initials": None,
"MiddleName": None,
"NickName": None,
"Surname": None,
"Title": None,
"YomiGivenName": None,
"YomiSurname": None,
"YomiCompanyName": None,
"Generation": None,
"ImAddresses": [],
"JobTitle": None,
"CompanyName": None,
"Department": None,
"OfficeLocation": None,
"Profession": None,
"BusinessHomePage": None,
"AssistantName": None,
"Manager": None,
"HomePhones": [],
"MobilePhone1": None,
"BusinessPhones": [],
"SpouseName": None,
"PersonalNotes": "",
"Children": [],
"EmailAddresses": [],
"HomeAddress": {
"Type": "Unknown"
},
"BusinessAddress": {
"Type": "Unknown"
},
"OtherAddress": {
"Type": "Unknown"
}
}
req = url.format(email_id=email_id, contact_id=contact_id)
resp = requests.put(url=req, json=data, headers=HEADERS)
#print(HEADERS)
print(resp)
resp = resp.json()
print(resp)
这是我的请求标头-
def set_headers():
global HEADERS
token_resp = get_token(email_id).json()
access_token = token_resp.get('access_token')
HEADERS['Authorization'] = 'Bearer '+ access_token
HEADERS["content-type"] = "application/json"
HEADERS['accept'] = "application/json"
HEADERS['X-AnchorMailbox'] = email_id
#print(HEADERS)
这是response(405)
使用打印语句:
<Response [405]> {u'error': {u'message': u'The OData request is not
supported.', u'code': u'ErrorInvalidRequest'}}
解决方案
根据他们的文档,您需要使用 PATCH 方法进行更新:链接。
推荐阅读
- c++ - 如何在 if 语句中使用重载运算符作为条件?
- for-loop - 使用路线 53 记录遍历 terraform 中的对象地图
- c - While 或 Switch 仅检测 C 中的小写而不是大写
- codenameone - 有没有办法在表单输入/输出转换期间摆脱短暂的 BrowserComponent 白色闪烁?
- python - 如何将数据拆分为训练和测试数据
- typescript - 如何将 Next.js 中的共享组件提取到 npm 模块中?
- php - SQL Server 没有向 php 返回自定义字母
- android - Android 10 范围存储如何删除共享目录中的底层图像文件
- python - 你能帮我弄清楚为什么这个函数执行太糟糕了吗?
- reactjs - 箭头函数元素的#USAGE 是什么?