gpt4 book ai didi

PHP fatal error : Uncaught exception 'Exception' with message

转载 作者:可可西里 更新时间:2023-10-31 23:26:33 27 4
gpt4 key购买 nike

我有一个 PHP 脚本连接到一个 api 并将信息发布到他们的系统,但是当它尝试连接时它抛出一个 fatal error :

Fatal error: Uncaught exception 'Exception' with message 'Problem with
'http://apitestserver.co.uk:9000/Service.svc/Items' in
/var/www/html/e/connect_test.php:17 Stack trace: #0
/var/www/html/e/connect_test.php(39):
do_http_request('http://apitest....', 'hello') #1 {main} thrown in
/var/www/html/e/connect_test.php on line 17

如果我将它发送到一个只获取 IP 的 PHP 脚本,那么它就可以工作,但是如果我将它发送到 API,它就不会。我的 PHP 脚本创建 XML,然后转发到服务器。我遇到了错误,所以我创建了以下较小的脚本,纯粹是为了测试连接:

function do_http_request($url, $data, $method = 'POST', 
$optional_headers = 'Content-Type: application/atom+xml') {

$params = array(
'http' => array(
'method' => $method,
'content' => $data
)
);

if ($optional_headers !== null) {
$params['http']['header'] = $optional_headers;
}

$ctx = stream_context_create($params);
$fp = fopen($url, 'rb', false, $ctx);
if (!$fp) {
throw new Exception("Problem with $url");
}

$response = @stream_get_contents($fp);
if ($response === false) {
throw new Exception("Problem reading data from $url");
}

$metaData = stream_get_meta_data($fp);
fclose($fp);

if(!preg_match('~^HTTP.*([0-9]{3})~',
$metaData['wrapper_data'][0], $matches)){
throw new Exception('MALFORED RESPONSE - COULD NOT UNDERSTAND HTTP CODE');
}
if (substr($matches[1], 0, 1) != '2') {
throw new Exception('SERVER REPORTED HTTP ERROR ' . $matches[1]);
}
return $response;
}
$data = 'hello';
$paul =
do_http_request('http://apitestserver.co.uk:9000/Service.svc/Items',$data);

echo $paul;

如果我将 URL 更改为我们另一台服务器上的简单脚本,它只获取传入连接的 IP 并返回它:

 $ip=$_SERVER['REMOTE_ADDR'];
echo 'IP equals = ' . $ip;

然后它工作正常,没有错误。

更新 -

错误会抛出以下警告,可能是因为脚本没有向 API 发送正确的信息

Warning: fopen(http://apitestserver.co.uk:9000/Service.svc/Items) 
[function.fopen]: failed to open stream: HTTP request failed! HTTP/1.1
500 Data at the root level is invalid. Line 1, position 1.

另请注意,我可以使用 fiddler 正常访问 api 服务器以发送手动创建的项目,就在该脚本尝试连接和发送数据时出现问题。我写了另一个快速脚本,它连接并打印出默认响应(提交项目的 rss 提要)

当我运行“主”连接器脚本时,它抛出以下两个错误

Warning: fopen() [function.fopen]: php_network_getaddresses: 
getaddrinfo failed: Name or service not known in
/var/www/html/e/sequence.php on line 65

Warning: fopen(http://apitestserver.co.uk:9000/Service.svc/Items)
[function.fopen]: failed to open stream: Operation now in progress
in /var/www/html/e/sequence.php on line 65

最佳答案

我建议使用 curl而不是 fopen()。 curl 更灵活,也更安全。许多服务器禁用 allow_url_fopen ,当远程服务器出现问题时,curl 也会更优雅地失败。

关于PHP fatal error : Uncaught exception 'Exception' with message,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1165122/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com