在Android和php之间通信时如何停止NullPointerException(使用fcm)

在Android和php之间通信时如何停止NullPointerException(使用fcm),php,android,firebase,firebase-cloud-messaging,Php,Android,Firebase,Firebase Cloud Messaging,我在用Android与php通信时出错 其他php运行没有问题 此代码是Android错误的一部分 public String getStringFromUrl(String pUrl) { BufferedReader bufreader = null; HttpURLConnection urlConnection = null; StringBuffer page = new StringBuffer(); try {

我在用Android与php通信时出错

其他php运行没有问题

此代码是Android错误的一部分

public String getStringFromUrl(String pUrl) {
        BufferedReader bufreader = null;
        HttpURLConnection urlConnection = null;

        StringBuffer page = new StringBuffer();
        try {
            URL url = new URL(pUrl);
            urlConnection = (HttpURLConnection) url.openConnection();
            InputStream contentStream = urlConnection.getInputStream();
            bufreader = new BufferedReader(new InputStreamReader(contentStream, "UTF-8"));
            String line = null;

            while ((line = bufreader.readLine()) != null) {
                Log.d("line:", line);
                page.append(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                bufreader.close();
                urlConnection.disconnect();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        return page.toString();
    }
这是错误日志

原因:java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“void java.io.BufferedReader.close()” 在com.example.administrator.resapp_sub.OrderHistory$comCommunicationServer.getStringFromUrl(OrderHistory.java:116)上 位于com.example.administrator.resapp_sub.OrderHistory$comCommunicationServer.doInBackground(OrderHistory.java:67) 位于com.example.administrator.resapp_sub.OrderHistory$comCommunicationServer.doInBackground(OrderHistory.java:56) 在android.os.AsyncTask$2.call(AsyncTask.java:295) 位于java.util.concurrent.FutureTask.run(FutureTask.java:237) 在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 运行(Thread.java:818)

下面是要获取的php

<?php
function send_notification ($tokens, $message)
{
    $url = 'https://fcm.googleapis.com/fcm/send';
    $fields = array( 'registration_ids' => $tokens, 'data' => $message);
    $headers = array('Authorization:key =' . GOOGLE_API_KEY,'Content-Type: application/json');
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
    $result = curl_exec($ch);
    if ($result === FALSE) {
        die('Curl failed: ' . curl_error($ch));
    }
    curl_close($ch);
    return $result;
}
include_once 'config.php';
$conn = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$id = $_GET['id'];
$sql = "Select Token From member where M_Id='" . $id . "'";
$result = mysqli_query($conn,$sql);
$tokens = array();
if(mysqli_num_rows($result) > 0 ){
    while ($row = mysqli_fetch_assoc($result)) {
            $tokens[] = $row["Token"];
    }
}         
mysqli_close($conn);
$myMessage = $_GET['message']; //폼에서 입력한 메세지를 받음
if ($myMessage == ""){
    $myMessage = "Nothinh here";
}
$message = array("message" => $myMessage);
$message_status = send_notification($tokens, $message);
echo $message_status;
?>