向Google Cloud PHPMyAdmin服务器发送REST调用不工作?
我已经成功地在向Google Cloud PHPMyAdmin服务器发送REST调用不工作?,php,android,mysql,google-app-engine,phpmyadmin,Php,Android,Mysql,Google App Engine,Phpmyadmin,我已经成功地在googlecloud上部署了phpMyAdmin服务器。我在尝试写入phpMyAdmin中创建的数据库时遇到问题。我正在尝试创建一个基于Google发布的新的Firebase Cloud Messaging的通知服务 NotificationInstanceService.java public class NotificationInstanceService extends FirebaseInstanceIdService { private static fina
googlecloud
上部署了phpMyAdmin
服务器。我在尝试写入phpMyAdmin中创建的数据库时遇到问题。我正在尝试创建一个基于Google发布的新的Firebase Cloud Messaging
的通知服务
NotificationInstanceService.java
public class NotificationInstanceService extends FirebaseInstanceIdService {
private static final String TAG = "NotificationInstance";
@Override
public void onTokenRefresh() {
//Getting registration token
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
//Displaying token on logcat
Log.d(TAG, "Refreshed token: " + refreshedToken);
sendRegistrationToServer(refreshedToken);
}
private void sendRegistrationToServer(String token) {
//You can implement this method to store the token on your server
//Not required for current project
OkHttpClient client = new OkHttpClient();
//Create the request body
RequestBody body = new FormBody.Builder().add("Token", token).build();
//Know where to send the request to
Request request = new Request.Builder().url("<db link>.appspot.com/fcm/register.php")
.post(body)
.build();
//Create
try {
client.newCall(request).execute();
} catch (IOException e) {
e.printStackTrace();
}
}
}
config.inc.php:
<?php
$cfg['blowfish_secret'] = '<Secret>'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
/*
* Servers configuration
*/
$i = 0;
// Change this to use the project and instance that you've created.
$host = '/cloudsql/<app server url>:us-central1:<database name>-app-php';
$type = 'socket';
/*
* First server
*/
$i++;
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['socket'] = $host;
$cfg['Servers'][$i]['connect_type'] = $type;
$cfg['Servers'][$i]['compress'] = false;
/* Select mysql if your server does not have mysqli */
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassword'] = true;
/*
* End of servers configuration
*/
/*
* Directories for saving/loading files from server
*/
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';
$cfg['PmaNoRelation_DisableWarning'] = true;
$cfg['ExecTimeLimit'] = 60;
$cfg['CheckConfigurationPermissions'] = false;
// [END all]
编辑:在浏览器中,转到.appspot.com/fcm/register.php时的文本
<?php
if (isset($_POST["Token"])) {
$_uv_Token=$_POST["Token"];
$conn = mysqli_connect("<db link>.appspot.com","root","","fcm") or die("Error connecting");
$q="INSERT INTO users (Token) VALUES ( '$_uv_Token') "
." ON DUPLICATE KEY UPDATE Token = '$_uv_Token';";
mysqli_query($conn,$q) or die(mysqli_error($conn));
mysqli_close($conn);
}
?>
数组(11){[“pmaCookieVer”]=>string(1)“5”[“pma_lang”]=>string(2)
“en”[“pma\U排序规则\U连接”]=>字符串(15)“utf8\U unicode\U ci”
[“pma_控制台高度”]=>字符串(2)“92”[“SACSID”]=>字符串(355)
2.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 WFVX22BV5D2PJDPQEN4M3D7yP3 Wdg“
[“pma_控制台_配置”]=>字符串(103)
{“alwaysExpand”:false,“StartThistory”:false,“currentQuery”:true,“EnterExecutions”:false,“darkTheme”:false}
[“pma_控制台_模式”]=>字符串(4)“显示”[“phpMyAdmin”]=>字符串(40)
“cfd814e10982d138c7ed4a3ef510c454c0e5f9b9”[“pma_iv-1”]=>字符串(24)
“bSPnJOOBe5x0iXPbbU5Nww==”[“pmaUser-1”]=>字符串(24)
“oHSLKZ7q6eOaXJ475Q6tzw==”[“pmaPass-1”]=>字符串(24)
“dwKZ9gQPCoe/Uk4sWS4s2g==”}
new register.php:
<?php
if (isset($_REQUEST["Token"])) {
$_uv_Token=$_REQUEST["Token"];
$conn = mysqli_connect("/cloudsql/<Database ServerURL>","root","","FCM") or die("Error connecting");
$q="INSERT INTO users (Token) VALUES ( '$_uv_Token') "
." ON DUPLICATE KEY UPDATE Token = '$_uv_Token';";
var_dump(mysqli_query($conn,$q));
mysqli_query($conn,$q) or die(mysqli_error($conn));
mysqli_close($conn);
} else {
var_dump($_REQUEST);
}
?>
我不知道你的问题到底是什么,不清楚。但是既然你问:
我有没有办法调试我的脚本是否真的进入了PHP代码?如何调试PHP代码?
以下是您的答案:
将php代码更改为:
<?php
if (isset($_POST["Token"])) {
$_uv_Token=$_POST["Token"];
$conn = mysqli_connect("<db link>.appspot.com","root","","fcm") or die("Error connecting");
$q="INSERT INTO users (`Token`) VALUES ( `{$_uv_Token}`) "
." ON DUPLICATE KEY UPDATE `Token` = `{$_uv_Token}`;";
mysqli_query($conn,$q) or die(mysqli_error($conn));
mysqli_close($conn);
} else {
echo "Token is not set!";
}
?>
如果在
?>
之前向register.php文件添加一个else{var\u dump($\u REQUEST);}
,您会得到任何输出吗?如果没有,请尝试将以mysqli\u查询($conn,$q)
开头的行替换为var\u转储(mysqli\u查询($conn,$q))
然后再试一次,只是为了另一个测试。@Hafenkranich那么这个文件被转储到哪里呢?我试着按照你的建议去做,但似乎不知道在哪里可以找到关于这个请求的更多信息。如果您呼叫https://.appspot.com/fcm/register.php
在浏览器中,您应该在else
中结束,因为您没有通过POST提供令牌。我会先检查它是否有效。2.如果可以,请将register.php中的所有$\u POST
更改为$\u REQUEST
,然后调用https://.appspot.com/fcm/register.php?Token=123
。这应该要么向数据库发送一个新的假用户,要么打印出有用的调试输出。3.如果这起作用(数据库中的用户),php部分似乎起作用,问题就出在java脚本的某个地方。(请确保重置我建议更改以进行测试的所有内容)@user1871869如果在$\u请求中未设置令牌
,那么这看起来是Java的问题,而不是PHP的问题。您可以发布一个指向请求
类的javadoc(或其他文档)的链接吗?查询字符串参数可能需要与另一个链接函数连接,如.get()
或.query()
。如果您只想测试与DB部分(而不是Java查询构建部分)的连接,您应该能够将令牌硬编码到PHP文件中,或者在浏览器中手动提供令牌(或,或),然后查看返回的内容。
<?php
if (isset($_REQUEST["Token"])) {
$_uv_Token=$_REQUEST["Token"];
$conn = mysqli_connect("/cloudsql/<Database ServerURL>","root","","FCM") or die("Error connecting");
$q="INSERT INTO users (Token) VALUES ( '$_uv_Token') "
." ON DUPLICATE KEY UPDATE Token = '$_uv_Token';";
var_dump(mysqli_query($conn,$q));
mysqli_query($conn,$q) or die(mysqli_error($conn));
mysqli_close($conn);
} else {
var_dump($_REQUEST);
}
?>
Request request = new Request.Builder().url("<Application Server>/fcm/register.php?Token=123")
.post(body)
.build();
<?php
if (isset($_POST["Token"])) {
$_uv_Token=$_POST["Token"];
$conn = mysqli_connect("<db link>.appspot.com","root","","fcm") or die("Error connecting");
$q="INSERT INTO users (`Token`) VALUES ( `{$_uv_Token}`) "
." ON DUPLICATE KEY UPDATE `Token` = `{$_uv_Token}`;";
mysqli_query($conn,$q) or die(mysqli_error($conn));
mysqli_close($conn);
} else {
echo "Token is not set!";
}
?>
...
try {
Response response = client.newCall(request).execute();
} catch (IOException e) {
e.printStackTrace();
}
if (!response.isSuccessful()){
Log.w(TAG, "Unexpected response"+response.toString());
} else {
Log.w(TAG, "response: "+response.body().string());
}
...