如何使用Twitter API发送包含德语变音符号的状态更新
推特API发送含德语变音符号推文的解决方案
你遇到的报错核心是OAuth 1.0a签名计算和请求参数编码不一致,以及参数传递方式的规范问题,按以下步骤调整即可解决:
- 优先把
status参数放到POST请求体中传递,不要放在URL里。你之前放请求体报Missing required parameter: status.的原因有两个:- 没有正确设置请求头
Content-Type: application/x-www-form-urlencoded - 生成OAuth签名时没有把请求体中的
status参数纳入签名计算,OAuth 1.0a要求所有请求参数(无论在URL还是请求体中)都必须参与签名
- 没有正确设置请求头
- 严格遵循RFC 3986规范对带变音符号的内容做编码:
- 先把推文内容转为UTF-8编码的字节流,德语变音符号对应的UTF-8字节为:ä=0xC3A4、ö=0xC3B6、ü=0xC3BC、ß=0xC39F
- 对所有非安全字符(除A-Z、a-z、0-9、-、.、_、~之外的字符)做百分号编码,编码后的十六进制字母必须大写,空格统一编码为
%20而非+ - 编码示例:内容
Hallo äöüß编码后为Hallo%20%C3%A4%C3%B6%C3%BC%C3%9F
- 保持签名和请求参数的一致性:生成签名时使用的
status编码值,必须和最终发送请求时的status参数值完全一致,不要调整编码顺序或者二次编码 - 如果你使用第三方SDK调用接口,直接把SDK的全局编码设置为UTF-8即可,无需额外手动处理字符转义
内容的提问来源于stack exchange,提问作者t3o
相关产品推荐
相关产品推荐

