1

私はhttr、REDCap データベースから R にデータをエクスポートするために数か月間使用しています。最近、R Studio Server を最新バージョン (v0.98.1049) にアップグレードし、同時に R 3.1.1 にアップグレードしました。そのアップグレードの後、httr::POST通話が機能しなくなることがありました。私が取得し続けるエラーは

Error in function (type, msg, asError = TRUE)  : 
GnuTLS recv error (-9): A TLS packet with unexpected length was received.

最初は SSL の問題かもしれないと思っていましたが、特定のデータベースでのみエラーが発生し、それらのデータベースでは .xml を使用してデータをダウンロードできますRCurl。つまり、このコードは機能します

RCurl::postForm(uri=[URL],
                .params=list(token=[TOKEN],
                             content='record',
                             format='csv'))

しかし、このコードはしません

httr::POST(url=[URL],
           body=list(token=[TOKEN],
                     content='record',
                     format='csv'))

このエラーが発生したプロジェクトでデータをエクスポートできなくても、データをインポートすることはできます。

私はどこから始めるべきかについてのアイデアがありません。ここで何がうまくいかないのかについてのアイデアをいただければ幸いです。

(再現可能な例を提供したいのですが、残念ながら私は医療データを扱っています。申し訳ありません)

リクエストに応じて、ここに verbose() の出力があります。少し異なる呼び出しですが、同じエラーが発生します。(機密情報を公開するリスクのない電話を使用しました)

  > httr::POST(url=whi$url,  
  +            body=list(token=whi$token,  
  +                      content='metadata',  
  +                      format='csv'),   
  +            httr::verbose(data_in=TRUE, info=TRUE))  
  *  Hostname was found in DNS cache  
  *  Hostname in DNS cache was stale, zapped  
  *      Trying 172.26.30.4...  
  *  Connected to [URL] (172.26.30.4) port 443 (#7)  
  *  found 153 certificates in /home/nutterb/R/x86_64-unknown-linux-gnu-library/3.1/httr/cacert.pem  
  *  SSL re-using session ID  
  *      server certificate verification OK  
  *      common name: [URL] (matched)  
  *      server certificate expiration date OK  
  *      server certificate activation date OK  
  *      certificate public key: RSA  
  *      certificate version: #3  
  *      subject: OU=Domain Control Validated,CN=[URL]  
  *      start date: Thu, 10 Apr 2014 17:06:17 GMT  
  *    
  *      expire date: Sat, 21 Mar 2015 16:35:07 GMT  
  *    
  *      issuer: C=US,ST=Arizona,L=Scottsdale,O=Starfield Technologies\, Inc.,OU=http://certs.starfieldtech.com/repository/,CN=Starfield Secure Certificate Authority - G2  
  *      compression: NULL  
  *      cipher: AES-128-CBC  
  *      MAC: SHA1  
  -> POST /redcap/api/ HTTP/1.1  
  -> User-Agent: curl/7.35.0 Rcurl/1.95.4.1 httr/0.5.0.9000  
  -> Host: [URL]  
  -> Accept-Encoding: gzip  
  -> accept: application/json, text/xml, */*  
  -> Content-Length: 374  
  -> Expect: 100-continue  
  -> Content-Type: multipart/form-data; boundary=------------------------05c968969cc362a9  
  ->   
  <- HTTP/1.1 100 Continue  
  >> --------------------------05c968969cc362a9  
  >> Content-Disposition: form-data; name="token"  
  >>   
  >> [TOKEN]  
  >> --------------------------05c968969cc362a9  
  >> Content-Disposition: form-data; name="content"  
  >>   
  >> metadata  
  >> --------------------------05c968969cc362a9  
  >> Content-Disposition: form-data; name="format"  
  >>   
  >> csv  
  >> --------------------------05c968969cc362a9--  
  <- HTTP/1.1 200 OK  
  <- Date: Sat, 06 Sep 2014 09:55:43 GMT  
  <- Expires: 0  
  <- cache-control: no-store, no-cache, must-revalidate  
  <- Pragma: no-cache  
  <- Access-Control-Allow-Origin: *  
  <- Vary: Accept-Encoding  
  <- Content-Type: text/html; charset=utf-8  
  <- Connection: close  
  <- Content-Encoding: gzip  
  <-   
  <<  NA  
  <<  NA  
  <<  NA  
  <<  NA  
  <<  NA  
  <<  NA  
  <<  NA  
  <<  NA  
  <<  NA  
  <<  NA  
  <<  NA  
  *  GnuTLS recv error (-9): A TLS packet with unexpected length was received.  
  *  Closing connection 7  
  Error in function (type, msg, asError = TRUE)  :   
    GnuTLS recv error (-9): A TLS packet with unexpected length was received.  
  In addition: There were 11 warnings (use warnings() to see them)  
  > warnings()  
  Warning messages:  
  1: In strsplit(x, "\n", fixed = TRUE) : input string 1 is invalid in this locale  
  2: In strsplit(x, "\n", fixed = TRUE) : input string 1 is invalid in this locale  
  3: In strsplit(x, "\n", fixed = TRUE) : input string 1 is invalid in this locale  
  4: In strsplit(x, "\n", fixed = TRUE) : input string 1 is invalid in this locale  
  5: In strsplit(x, "\n", fixed = TRUE) : input string 1 is invalid in this locale  
  6: In strsplit(x, "\n", fixed = TRUE) : input string 1 is invalid in this locale  
  7: In strsplit(x, "\n", fixed = TRUE) : input string 1 is invalid in this locale  
  8: In strsplit(x, "\n", fixed = TRUE) : input string 1 is invalid in this locale  
  9: In strsplit(x, "\n", fixed = TRUE) : input string 1 is invalid in this locale  
  10: In strsplit(x, "\n", fixed = TRUE) : input string 1 is invalid in this locale  
  11: In strsplit(x, "\n", fixed = TRUE) : input string 1 is invalid in this locale  
  > 
4

0 に答える 0