【问题标题】:Specific value from php curl response [duplicate]来自php curl响应的特定值[重复]
【发布时间】:2020-09-26 13:14:31
【问题描述】:

我已尝试从我的请求中获得响应,但没有成功。

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://sandbox.monnify.com/api/v1/bank-transfer/reserved-accounts",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS =>"{\n    \"accountReference\": \"0111443-JP098\",\n    \"accountName\": \"Joe Philips\",\n    \"currencyCode\": \"NGN\",\n    \"contractCode\": \"6146592431\",\n    \"customerEmail\": \"jp@tester.com\",\n    \"customerName\": \"Joe Philips\",\n    \"incomeSplitConfig\": [\n        {\n            \"subAccountCode\": \"MFY_SUB_275274693326\",\n            \"feePercentage\": 10.5,\n            \"splitPercentage\": 20,\n            \"feeBearer\": true\n        }\n    ]\n}",
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsibW9ubmlmeS1wYXltZW50LWVuZ2luZSJdLCJzY29wZSI6WyJwcm9maWxlIl0sImV4cCI6MTU5NzI2MzAyNCwiYXV0aG9yaXRpZXMiOlsiTVBFX01BTkFHRV9MSU1JVF9QUk9GSUxFIiwiTVBFX1VQREFURV9SRVNFUlZFRF9BQ0NPVU5UIiwiTVBFX0lOSVRJQUxJWkVfUEFZTUVOVCIsIk1QRV9SRVNFUlZFX0FDQ09VTlQiLCJNUEVfQ0FOX1JFVFJJRVZFX1RSQU5TQUNUSU9OIiwiTVBFX1JFVFJJRVZFX1JFU0VSVkVEX0FDQ09VTlQiLCJNUEVfREVMRVRFX1JFU0VSVkVEX0FDQ09VTlQiLCJNUEVfUkVUUklFVkVfUkVTRVJWRURfQUNDT1VOVF9UUkFOU0FDVElPTlMiXSwianRpIjoiYTQ5YjIxNDgtNTJkMy00ZGI1LTg2NGYtYzdiM2NjM2M4NzUzIiwiY2xpZW50X2lkIjoiTUtfVEVTVF9DSFZRRlJBN1NHIn0.mqwi5y7wnXpBCk6R9dC3ORhf9pNkwHVOCJr2SHUfk9TFYpVMnGuBUVyxJFOwLHROyKVodquPr1eS2AT1nTUDCrW0YXlX9tX5BPrfckvDoPPza7Klc8uQrw1aVxF6sAK-hFZgC79lKOq9gowOqWP1frbJ5BqozZfYiQ6ZsZcf2LubDOoen_G6_13wGtCM58-9BcY6aMKv--Vxr0AFwSqujBMny1D-x2SgsqT98asoYvtaHGtiC4MbVg-jFwwJuG4BYststO0k1J0YI5frpyLyQfaNEJSR6Y-WJiCqFWIDpHgDFINl65xtMIE_15OV2BKfBsruCo5mkx_rHPH_4_tXWw"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

这是curl中的请求代码,下面是响应

    {
  "requestSuccessful": true,
  "responseMessage": "success",
  "responseCode": "0",
  "responseBody": {
    "contractCode": "6146592431",
    "accountReference": "abc123",
    "accountName": "Test Reserved Account",
    "currencyCode": "NGN",
    "customerEmail": "test@tester.com",
    "accountNumber": "3000004533",
    "bankName": "Providus Bank",
    "bankCode": "101",
    "collectionChannel": "RESERVED_ACCOUNT",
    "reservationReference": "W3HP7E6VZP78TUKV4U9E",
    "reservedAccountType": "GENERAL",
    "status": "ACTIVE",
    "createdOn": "2020-08-12 18:56:49.0",
    "contract": {
      "name": "Default Contract",
      "code": "6146592431",
      "description": null,
      "supportsAdvancedSettlementAccountSelection": false,
      "sweepToExternalAccount": false
    },
    "transactionCount": 0,
    "restrictPaymentSource": false
  }
}

在所有响应正文中,我只需要以下响应;

"accountNumber": "3000004533",
"customerEmail": "test@tester.com",
"bankName": "Providus Bank",

请问,我该怎么做。

【问题讨论】:

  • 响应包含"requestSuccessful": true 以及其他数据,是什么让您认为它不起作用?
  • 哦..对不起,我想我没有说清楚。我真正需要的是从整个响应中取出上面提到的响应体

标签: php api curl customization


【解决方案1】:

将 json 字符串解析为 PHP 对象或数组,然后得到它。将您的信息发送至 $rp 变量

...
$response = curl_exec($curl);

$obj = json_decode($response, true);

$i = 0;
$nw= array_filter($obj['responseBody'], function($v,$k){
  return in_array($k, ['accountNumber', 'customerEmail', 'bankName']);
}, ARRAY_FILTER_USE_BOTH);
$i=0;
foreach($nw as $k => $v){
  $last = $i !== count($nw)-1 ? ','.PHP_EOL : '';
  echo "\"$k\": \"$v\"".$last;
  $i++;
}


curl_close($curl);

编辑:只需在

中显示结果

【讨论】:

  • 您好,感谢您的帮助。我真的很感激......但是,它没有用。仍然得到与我得到的相同的响应
  • @Michael 输出是什么?
  • @Michael 我已经编辑了我的答案,你可以在服务器中看到准确的输出
  • 非常感谢。这就是我得到的; (1) 为 foreach() in... 提供的参数无效 (2) array_filter() 期望参数 1 为数组
  • 我调整了你给我的第一个代码,它给了我值..但都在同一行。这是代码。 $response = curl_exec($curl); $objs = json_decode($response, true); $rp = $objs['responseBody'];回声 $rp['accountNumber'];回声 $rp['accountName'];回声 $rp['bankName']; curl_close($curl);
猜你喜欢
  • 1970-01-01
  • 2015-11-24
  • 1970-01-01
  • 2016-02-03
  • 1970-01-01
  • 2012-02-05
  • 2020-06-01
  • 2014-07-24
  • 1970-01-01
相关资源
最近更新 更多