【发布时间】:2019-08-24 18:13:25
【问题描述】:
简单的 R DemoPackage 函数的 php guzzle OpenCPU POST 请求
$response = $client->request('POST','http://178.254.13.220/ocpu/library/DemoPackage/R/addition/json', ['json' => $jsontext, 'debug' => true]);
在 ubuntu 服务器上执行期间卡住。简单的加法函数将 2 个数字相加并返回总和作为结果(参见下面的代码)。
如果“POST”改为“GET”,则请求通过以下命令在变量body中传递正确的函数添加源代码:$body = $response->getBody();
在开发和测试该功能的本地 Mac 计算机上,DemoPackage 工作正常。我在 ubuntu 服务器上的其他 R 包运行完美,但是在这个添加 2 个数字的简单示例中我找不到错误。
addition <- function(jsontext)
{
tmp <- unlist(jsonlite::fromJSON(jsontext))
a <- as.numeric(tmp[[1]])
b <- as.numeric(tmp[[2]])
c <- a + b
aValue <- as.character(round(a))
bValue <- as.character(round(b))
cValue <- as.character(round(c))
pValue_dataframe <- data.frame(aValue,bValue,cValue)
result <- list(sum = pValue_dataframe)
result_json <- toJSON(result)
return(result_json)
}
执行 POST 请求时 php 代码很糟糕。使用 http 请求调试选项时会出现错误消息,但是我无法解释它或不知道该怎么做。错误信息是:
找到主机 178.254.13.220 的捆绑包:0x28d6b90 * 重新使用现有连接! (#0) 与主机 178.254.13.220 * 连接到 178.254.13.220 (178.254.13.220) 端口 80 (#0) > POST /ocpu/library/DemoPackage/R/addition/json HTTP/1.1 用户代理:GuzzleHttp/6.2 .1 curl/7.35.0 PHP/5.5.9-1ubuntu4.20 内容类型:application/json 主机:178.254.13.220 内容长度:67 * 上传完全发送:67 个字节中的 67 个
【问题讨论】:
-
信息不足,无法提供帮助。请在启用
debug选项的情况下运行您的 HTTP 请求并添加结果。 -
一个好建议!我添加了调试选项(见上文)并更改了添加函数的前 3 行。
标签: php r rstudio guzzle opencpu