使用Octave 4.0.2提交Coursera作业时出错

时间:2016-05-20 11:50:37

标签: octave

这是错误:

   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中添加到哪里。

6 个答案:

答案 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,电子邮件,令牌,部分)应用以下更改

  1. 评论专栏responseBody = urlread(submissionUrl, 'post', params);

  2. 键入以下内容代替它, [code, responseBody] = system(sprintf('echo jsonBody=%s | curl -k -XPOST -d @- %s', body, submissionUrl));

  3. 所以函数的最终代码看起来像

    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文件夹,并且对我有用。