RCurl在出错时获取响应体

RCurl在出错时获取响应体,r,rcurl,responsetext,R,Rcurl,Responsetext,我只是尝试在post请求使用RCurl失败时获取响应主体。当我通过R运行它时,我只得到响应错误,它失败了 Error: Unprocessable Entity 当我用UI界面发布相同的请求进行测试时,它给出 { "reason": [ "Can not create Data with Name: DataTest. Data Name should be unique." ], "singleReason": "Can not create Data with Name: Data

我只是尝试在post请求使用RCurl失败时获取响应主体。当我通过R运行它时,我只得到响应错误,它失败了

Error: Unprocessable Entity
当我用UI界面发布相同的请求进行测试时,它给出

{
"reason": [
    "Can not create Data with Name: DataTest. Data Name should be unique."
],
"singleReason": "Can not create Data with Name: DataTest. Data Name should be unique."
}
对于如何获得4XX错误响应机构的任何帮助,我们将不胜感激。蒂亚

发布请求

postdata.json <- '{"name":"DataTest","description":"Test Payload","algorithm":{"name":"DataTest","version":"0.1.0"}}'
post.result <- httpPOST(url=SERVER, postfields = postdata.json, verbose = T,
                        httpheader=c(Authorization=access.token, 'Content-Type'='application/json', Accept='application/json'))
* About to connect() to SERVER port 80 (#0)
*   Trying SERVER... * connected
* Connected to SERVER port 80 (#0)
> POST /api/test HTTP/1.1
Host: SERVER
Authorization: AUTHENTICATION
Content-Type: application/json
Accept: application/json
Content-Length: 171

< HTTP/1.1 422 Unprocessable Entity
< Content-Type: application/json;charset=UTF-8
< Date: Thu, 13 Nov 2014 16:31:42 GMT
< Server: Apache-Coyote/1.1
< Content-Length: 215
< Connection: keep-alive
< 
* Connection #0 to host SERVER left intact
 Show Traceback

 Rerun with Debug
 Error: Unprocessable Entity 

postdata.json以下是使用httr的一种方法:

library(httr)

postdata.json <- '{"name":"DataTest","description":"Test Payload","algorithm":{"name":"DataTest","version":"0.1.0"}}'

res <- POST(SERVER, 
  body = postdata.json, 
  add_headers(
    Authorization = access.token, 
    'Content-Type' = 'application/json', 
    Accept = 'application/json'
  )
)

http_status(res)
content(res)
库(httr)

postdata.json我能够通过添加basicTextGatherer()和writefunction,使用RCurl获得响应体

 reader <- basicTextGatherer()  
 post.result <- httpPOST(url=SERVER, postfields = postdata.json, verbose = T, 
                         writefunction = reader$update,
                         httpheader=c(Authorization=access.token, 
                                      'Content-Type'='application/json', 
                                      Accept='application/json')
                        )
 return(body=reader$value())

reader请提供一个最小的可重复的示例来演示您遇到的问题。使用
writefunction
和/或
debugfunction
选项,这些选项将被传递到“执行”。或者,让httr看看更简单的界面。