1

尝试通过以下方式发布表单时出现此证书验证错误RCurl::postForm()

Error in function (type, msg, asError = TRUE)  : 
  SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

还不太熟悉 POST 表单,谁能告诉我我做错了什么?

产生错误的示例

我查看了http://goo.gl/qOf5t的源代码并确定了列出的第一个航班的 POST 形式(截至 2013 年 4 月 9 日,这是 FFM - NY 为 437,97 欧元):

<form data-carrier='["AF"]' method="post" target="_blank" action=
"https://www.fluege.de/flight/itinerary/sFlightInput/bd253d844ad40c38e2334930a849da76/SAB"
class="clearfix itinForm">
  <input type="hidden" name="key" value="2" /> <input type="hidden" name="recom"
  value="2" /> <input type="hidden" name="type" value="SAB" />

  <div class="relative clearfix">
    <div class="Pricebox PriceboxWO">
      <div class="spiffy spiffytop schemeh1">
        <div class="spiffy1">
          &nbsp;
        </div>

        <div class="spiffy2">
          &nbsp;
        </div>

        <div class="spiffy3">
          &nbsp;
        </div>

        <div class="spiffy4">
          &nbsp;
        </div>
      </div>

      <div class="PriceItin floatfix">
        <div class="fll">
          Preis p. P.&nbsp;:&nbsp;
        </div>
      </div>
    </div>
  </div>
</form>

然后我解雇了这个:

require("RCurl")
x <- RCurl::postForm(
    uri="https://www.fluege.de/flight/itinerary/sFlightInput/bd253d844ad40c38e2334930a849da76/SAB",
    .params=list(
        key=160,
        recom=160,
        type="SAB"
    ),
    style="POST"
)
4

2 回答 2

3

从我在其他地方读到的内容来看,问题似乎是 RCurl 不再包含任何 CA 信息。

看看下面的网址。您可能需要从某处获取 CA 信息并将其安装在本地。

http://curl.haxx.se/docs/sslcerts.html

使用 getURL,您可以设置一个参数来忽略证书,但我还没有找到使用 postForm 的方法。

于 2013-04-11T16:10:10.480 回答
1

来自 RCurl 常见问题http://www.omegahat.org/RCurl/FAQ.html

为什么 https 对我不起作用?

可能是因为当您编译/安装 libcurl 时,您不支持 SSL。你可以用命令来检查 curl-config --feature 如果 ssl 没有出现在那里,你不支持它。您应该重新安装 curl,首先安装 SSL(例如openssl)。

于 2013-04-09T11:25:18.550 回答