这是错误:
curl: (1) Protocol "https" not supported or disabled in libcurl
!! Submission failed: unexpected error: input file does not exist
!! Please try again later.
我使用的是Windows 10。
我看到了一个可能相关的答案here,但我不知道这个代码会在Octave中添加到哪里。
答案 0 :(得分:7)
网址已更改。在lib / submitWithConfiguration.m文件中的submissionUrl()函数中使用新的。
event['job_name']
对于支票网址,您可以在终端使用curl。
function submissionUrl = submissionUrl()
%submissionUrl = 'https://www-origin.coursera.org/api/onDemandProgrammingImmediateFormSubmissions.v1';
submissionUrl = 'https://www.coursera.org/api/onDemandProgrammingImmediateFormSubmissions.v1';
end
您必须获得类似curl -k 'https://www.coursera.org/api/onDemandProgrammingImmediateFormSubmissions.v1'
如果网址错误,您就无法获得任何内容。
答案 1 :(得分:3)
尝试使用在submitWithConfiguration.m的响应函数中更改以下行的补丁:
params = {'jsonBody',body};
%responseBody = urlread(submissionUrl,'post',params);旧代码
[code,responseBody] = system(sprintf('echo jsonBody =%s | curl -k -X POST -d @ - %s',body,submissionUrl));
d @ - 将数据存入当前标准输入的文件中(回填填充)
-k允许curl执行“不安全”的SSL
(见卷曲 - 帮助)
HTH
==================
你的代码是我的代码,但我是W7
通过在网址周围设置引号再试一次:
function submissionUrl = submissionUrl()
submissionUrl =
' “https://www-origin.coursera.org/api/onDemandProgrammingImmediateFormSubmissions.v1”';
结束
(谨慎使用:'“和”'将在命令行中引用“https:// ..”。)
如果不起作用,请使用命令行(cmd)直接调用coursera:
curl -k“https://www-origin.coursera.org/api/onDemandProgrammingImmediateFormSubmissions.v1”
这将调用coursera,并且由于没有发送表单,该网站将回复一个接近结尾的html页面...未找到行动....
如果这样做,pb可能不在curl内,而在其他地方。让我们知道。
答案 2 :(得分:2)
答案#1中有一个拼写错误,在答案#2中已得到纠正。
改变是: 在功能中, 功能响应= submitParts(conf,电子邮件,令牌,部分)应用以下更改
评论专栏responseBody = urlread(submissionUrl, 'post', params);
键入以下内容代替它,
[code, responseBody] = system(sprintf('echo jsonBody=%s | curl -k -XPOST -d @- %s', body, submissionUrl));
所以函数的最终代码看起来像
function response = submitParts(conf, email, token, parts)
body = makePostBody(conf, email, token, parts);
submissionUrl = submissionUrl();
params = {'jsonBody', body};
#responseBody = urlread(submissionUrl, 'post', params);
[code, responseBody] = system(sprintf('echo jsonBody=%s | curl -k -XPOST -d @- %s', body, submissionUrl));
response = loadjson(responseBody);
end
答案 3 :(得分:1)
更改submitWithConfiguration.m
中的以下内容:
curl -k -X POST
到
curl -k -XPOST
再试一次。
答案 4 :(得分:0)
我刚刚在 Windows 10 上遇到了此问题。在我的情况下,请求正常执行,但是curl命令默认情况下输出时序信息,这将放弃提交脚本中的验证逻辑。
提交成功,但是如果我打印了response
字符串,它看起来像这样:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 1562 100 548 100 1014 548 1014 0:00:01 --:--:-- 0:00:01 2082
100 1562 100 548 100 1014 548 1014 0:00:01 --:--:-- 0:00:01 2082
{"id":"Blablablabla","courseId":"Blablabla","itemId":"Blabla",...}
我注意到它正在使用curl
命令发出请求,因此我在创建--silent
命令以在{{1}中执行的代码中添加了curl
标志}(以我的情况为第134行)。
submitWithConfiguration.m
现在,响应看起来更合理了:
% use urlread or curl to send submit results to the grader and get a response
function response = getResponse(url, body)
% try using urlread() and a secure connection
params = {'jsonBody', body};
[response, success] = urlread(url, 'post', params);
if (success == 0)
% urlread didn't work, try curl & the peer certificate patch
if ispc
% testing note: use 'jsonBody =' for a test case
json_command = sprintf('echo jsonBody=%s | curl --silent -k -X POST -d @- %s', body, url);
% ^^^^^^^^ this right here!!
else
% it's linux/OS X, so use the other form
json_command = sprintf('echo ''jsonBody=%s'' | curl --silent -k -X POST -d @- %s', body, url);
end
% get the response body for the peer certificate patch method
[code, response] = system(json_command);
% test the success code
if (code ~= 0)
fprintf('[error] submission with curl() was not successful\n');
end
end
end
提交成功完成。
答案 5 :(得分:0)
我遇到了同样的问题。我为克服此问题所做的一切就是,我将路径更改为ex2文件夹,并且对我有用。