Ответ жадности при попытке получить свойство необъекта - PullRequest
0 голосов
/ 23 октября 2019

У меня есть команда cron, над которой я пытаюсь работать, и я понял, что я не так знаком с Guzzle, как хотелось бы. Но вот часть моей команды:

    foreach($osdClaimResponses as $ocr){
        $client = new \GuzzleHttp\Client(['headers' => ['Accept' => 'application/json', 'Authorization' => 'XXXXXXXXXXXXXXXXXXXXXXX']]);
        $response = $client->request('GET', $endpoint, ['query' => [
            'events' => $events, 
            'transmissions' => $ocr->transmission_id,
        ]]);

        $body = $response->getBody()->getContents();
        $this->info($body);

        if($body->total_count > 0){
            foreach($body->results as $result){
                $this->info($result);
                if($result->rcpt_to == $ocr->destination){
                   $ocr->initial_open_at = Carbon\Carbon::parse($result->timestamp);
                   $ocr->initial_open_ip_address = $result->ip_address;
                   $ocr->save();
                }

            }
        }
    }

Теперь первоначальный запрос работает прекрасно, и я могу видеть соответствующий ответ на мой запрос (о котором я опубликую ниже) в строке $this->info($body) Я могу соответственно увидеть ответ. Однако, если я перейду к следующей строке, я получу сообщение об ошибке Trying to get property 'total_count' of non-object.

. Как видно из приведенного ниже результата, существует свойство с именем total_count, так что я делаю неправильно?

{
   "results":[
      {
         "template_version                                           ":"0",
         "friendly_from":"XXXXX",
         "subject":"[DRAFT] SXAL Claim",
         "ip_pool":"shared",
         "sending_domain":"XXXXX",
         "                                           rcpt_tags":[

         ],
     "type":"open",
     "raw_rcpt_to":"XXXXX",
     "msg_from":"XXXXX",
     "rcpt_to":"XXXXX",
     "geo_ip":{
        "zip":80216,
        "continent":"NA",
        "country":"US",
        "city":"Denv                                           er",
        "latitude":39.7845,
        "region":"CO",
        "postal_code":"80216",
        "longitude":XXXXX
     },
     "transmission_id":"XXXXX",
     "user_agent":"Outlook-iOS/711.3102771.p                                           rod.iphone (4.8.0)",
     "click_tracking":true,
     "rcpt_meta":{

     },
     "message_id":"XXXXX",
     "ip_address":"XXXXX",
     "initial_pixel":true,
     "recipient_domain                                           ":"XXXXX.com",
     "event_id":"XXXXX",
     "routing_domain":"XXXXX",
     "sending_ip":"192.174.87.34",
     "template_id":"template_697731362943421639",
     "delv_method":"esmtp",
     "customer_id":XXX,
     "open_tracking":true,
     "injection_time":"2019-10-23T15:37:10.000Z",
     "msg_size":"41644",
     "timestamp":"2019-10-23T16:03:34.                                           000Z"
  }
   ],
   "total_count":3,
   "links":{
   }
}

1 Ответ

0 голосов
/ 23 октября 2019

вы можете проверить тип $body? ошибка говорит, что вы пытаетесь

получить свойство 'total_count' не-объекта

$body = $response->getBody()->getContents();  //Read the remaining contents of the body as a string

попробуйте этот код $result = json_decode($response->getBody()); $body = $result->responses[0]->beans;

...