我正在实施Twitter新的Direct消息API, https://api.twitter.com/1.1/direct_messages/events/new.json
我面临错误, 415不支持的媒体类型
我可以通过TWURL工具调用它,目前我正在通过它发送简单的短信。
从错误代码中,我了解到内容类型问题或有效内容的格式不正确。
我正在传递有效载荷,
options = {
"event": {
"type": "message_create",
"message_create": {
"target": {
"recipient_id": "1234"
},
"message_data": {
"text": "test"
}
}
}
}
Payload被转换为通常的Ruby散列,即:key => "值"
{:event=>
{:type=>"message_create",
:message_create=>
{:target=>{:recipient_id=>"1234"},
:message_data=>{:text=>"test"}}}}
如何保留第三方API请求格式?
任何建议都会有很大的帮助。
由于
答案 0 :(得分:0)
您是否尝试过设置Content-Type ('application/json')
?发送前在您的内容标题中?
这是最常见的问题之一。
你可以通过做类似的事情来做到这一点:
before_filter :set_content_type
def set_content_type
@headers["Content-Type"] = "application/json; charset=utf-8"
end
它会强制您的应用在每个请求上附加Content-Type
。
答案 1 :(得分:0)
https://github.com/J7mbo/twitter-api-php/blob/master/TwitterAPIExchange.php
美国la clase TwitterAPIExchange 和其他应用。
您的购物习惯修改为:
la clase TwitterAPIExchange ,añadela propiedad
public $appjson;
en 公共功能__construct(array $ settings)的用法。
$this->appjson=false;
en 公共函数performRequest($ return = true,$ curlOptions = array())
remplaza
$header = array($this->buildAuthorizationHeader($this->oauth), 'Expect:');
por
if ($this->appjson) {
$header = array('Content-Type: application/json',$this->buildAuthorizationHeader($this->oauth), 'Expect:');
} else {
$header = array($this->buildAuthorizationHeader($this->oauth), 'Expect:');
}
最终封杀美国:
.....
$twitter = new TwitterAPIExchange($settings);
......
......
$twitter->appjson=true;
$twitter->buildOauth($url, $requestMethod)
->performRequest(true,
array( CURLOPT_POSTFIELDS => $params)
);
答案 2 :(得分:0)
我遇到了类似的错误,结果发现我发送请求的数据格式有点错误。我正在使用带有以下标头的python请求:
HEADERS = {
'Content-type': 'application/json',
'Accept': 'application/json'
}
但是仍然在实际数据上使用json.dumps()
,该请求随后与错误数据不一致,当我只发送没有dumps'ing
的数据时,请求全部正常。
这可能并没有真正的帮助,只是检查您的数据完整性。