curl无法连接到服务器

ds97pgxw  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(428)

过去两天,我一直在尝试使用CURL连接到支付网关API,返回JSON数据。但每次调用它时,它给予以下错误
cURL错误#:在813毫秒后无法连接到api.sandbox.vm.co.mz端口18352:无法连接到服务器
我的curl代码是:

$curl = curl_init();
curl_setopt_array($curl, 
  array(
    CURLOPT_PORT => "18352",
    CURLOPT_URL => "http://api.sandbox.vm.co.mz:18352/ipg/v1x/c2bPayment/singleStage/",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => json_encode($fields),
    CURLOPT_HTTPHEADER => array(
      'Content-Type' => 'application/json',
      'Authorization' =>  'Bearer ' . $this->getToken(),
      'origin' => 'developer.mpesa.vm.co.mz',
      'Connection' => 'keep-alive'
    )
  )
);

我的支付网关文档URL是Documentation Link
当我在postmanor中调用这个api,在本地运行时,它会给出我想要的响应,但是当它从服务器调用时,curl找不到api的服务器。
我做错了什么
请给予解决方案

vbkedwbf

vbkedwbf1#

您的标题不会像这样工作。
使用此选项:

$headers = array();
$headers[] = 'Content-Type: application/json';
$headers[] = 'Authorization: Bearer xxxxx';
$headers[] = 'origin: developer.mpesa.vm.co.mz';
$headers[] = 'Connection: keep-alive';

您有CURLOPT_MAXREDIRS => 10,,但没有CURLOPT_FOLLOWLOCATION =>true,,因此前者没有意义。
FOLLOWLOCATION选项还可以消除@LawrenceCherone提到的问题。
CURLOPT_FOLLOWLOCATION应该包含在每个curl要求中。不正确。
你得到的错误有点说CURLOPT_PORT => "18352",是不正确的,这是如果URL是正确的。
如果不能访问文档,我提供帮助的能力将受到限制。
为什么他们的文档是密码保护的,这超出了我的理解范围。
我不得不怀疑我是否会和这家公司做生意就凭这样愚蠢的东西。
我单击API链接,得到以下内容:

相关问题