在Android和php之间通信时如何停止NullPointerException(使用fcm)
我在用Android与php通信时出错 其他php运行没有问题 此代码是Android错误的一部分在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 {
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;
?>