首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab urlread2 - HTTP响应代码: 415 for URL

Matlab urlread2 - HTTP响应代码: 415 for URL
EN

Stack Overflow用户
提问于 2015-08-23 10:10:59
回答 1查看 969关注 0票数 0

我试图使用Matlab和可用的urlread2函数访问betfair。

编辑:我已经在自由职业者网站上发布了这个问题,如果有人能帮忙的话:tinyurl./pa7sblb

下面我所关注的betfair的文档就是这个入门指南。我已经成功登录并使用以下代码保持会话打开:(我正在获得成功的响应)

代码语言:javascript
复制
%% Login and get Token

url    = 'https://identitysso.betfair.com/api/login';
params = {'username' '******' 'password' '******'};

header1 = http_createHeader('X-Application','*****');
header2 = http_createHeader('Accept','application/json');

header = [header1, header2];

[paramString] = http_paramsToString(params)

[login,extras] = urlread2(url,'POST',paramString,header)
login = loadjson(login)
token = login.token

%% Keep Alive
disp('Keep Session Alive')
url_alive    = 'https://identitysso.betfair.com/api/keepAlive';

header1 = http_createHeader('X-Application','******');
header2 = http_createHeader('Accept','application/json');
header3 = http_createHeader('X-Authentication',token');

header_alive = [header1, header2, header3];

[keep_alive,extras] = urlread2(url_alive,'POST',[],header_alive);
keep_alive = loadjson(keep_alive);

keep_alive_status = keep_alive.status

我的麻烦开始时,我试图做下一步,并加载所有可用的市场。我正在尝试复制这个为Python设计的示例代码

代码语言:javascript
复制
import requests
import json

endpoint = "https://api.betfair.com/exchange/betting/rest/v1.0/"

header = { 'X-Application' : 'APP_KEY_HERE', 'X-Authentication' : 'SESSION_TOKEN_HERE' ,'content-type' : 'application/json' }

json_req='{"filter":{ }}'

url = endpoint + "listEventTypes/"

response = requests.post(url, data=json_req, headers=header)

下面是我为Matlab使用的代码。

代码语言:javascript
复制
%% Get Markets
url = 'https://api.betfair.com/exchange/betting/rest/v1.0/listEventTypes/';

header_application = http_createHeader('X-Application','******');
header_authentication = http_createHeader('X-Authentication',token');
header_content = http_createHeader('content_type','application/json');
header_list = [header_application, header_authentication, header_content];

json_body =  savejson('','filter: {}');

[list,extras] = urlread2(url_list,'POST',json_body,header_list)

我遇到了http响应代码415的问题。我认为服务器无法理解我的参数,因为我以前成功地使用了标题。

任何帮助或建议都将不胜感激!

这是错误:响应流是未定义的,下面是一个Java错误转储(截断):错误使用urlread2 (第217行) Java异常发生: java.io.IOException:服务器返回的HTTP响应代码: 415 for URL.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-24 11:12:05

我看过你的问题,它似乎是由两件事引起的:

1)内容类型应表示为“内容类型”,而不是“content_type”。

2) savejson函数没有创建足够的json字符串。如果您使用来自Python-脚本的json请求,它就能工作。

此代码适用于我:

代码语言:javascript
复制
%% Get Markets
url = 'https://api.betfair.com/exchange/betting/rest/v1.0/listEventTypes/';
header_application = http_createHeader('X-Application','*********');

header_authentication = http_createHeader('X-Authentication',token');
header_content = http_createHeader('content-type','application/json');
header_list = [header_application, header_authentication, header_content];

json_body = '{"filter":{ }}';

[list,extras] = urlread2(url,'POST',json_body,header_list)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32165505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档