如何将SharedReferences值发送到php文件?
我基本上想做的是,我创建一个登录应用程序,使用firebase我获取该设备的令牌并将其存储在数据库中,而当应用程序安装在设备中时,令牌存储在数据库中,在这里我将令牌存储在SharedReferences中以备以后使用,在下一个活动中,我使用数据库中的用户名和密码,我还使用SharedReferences存储值供以后使用 我想将在日志记录活动中提供用户名和密码的用户的id存储在数据库中,等同于令牌,这样我就可以知道谁的设备令牌存储在数据库中,我找到了一种方法,使用php我可以更新特定的用户id,等同于令牌列 但我的问题是,我无法将android活动中的用户名、密码、令牌发送到php文件,但我可以从SharedReferences中获取用户名、密码、令牌,使用toast我可以看到,但无法将它们发送到php文件 我的问题是如何将SharedReferences值发送到php文件 我的android代码如何将SharedReferences值发送到php文件?,php,android,android-sharedpreferences,Php,Android,Android Sharedpreferences,我基本上想做的是,我创建一个登录应用程序,使用firebase我获取该设备的令牌并将其存储在数据库中,而当应用程序安装在设备中时,令牌存储在数据库中,在这里我将令牌存储在SharedReferences中以备以后使用,在下一个活动中,我使用数据库中的用户名和密码,我还使用SharedReferences存储值供以后使用 我想将在日志记录活动中提供用户名和密码的用户的id存储在数据库中,等同于令牌,这样我就可以知道谁的设备令牌存储在数据库中,我找到了一种方法,使用php我可以更新特定的用户id,等
package com.example.calenderscheduler;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class Reg_Token_Id extends AppCompatActivity {
String Name, Password, Token;
Context ctx = this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences mPrefs = getSharedPreferences("identifier", Context.MODE_PRIVATE);
Name = mPrefs.getString("Name", null);
Password = mPrefs.getString("Password", null);
Token = mPrefs.getString("Token", null);
Toast.makeText(Reg_Token_Id.this , " token"+Token , Toast.LENGTH_LONG).show();
SendDeviceDetails b =new SendDeviceDetails();
b.execute(Name,Password,Token);
}
class SendDeviceDetails extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
String data = "";
String name = params[0];
String password = params[1];
String Token = params[2];
int tmp;
try {
URL url = new URL("http://localhost/sample/Scheduler/register_token_userId.php");
String urlParams = "Name=" + name + "Password=" + password+ "Token=" + Token;
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setDoOutput(true);
OutputStream os = httpURLConnection.getOutputStream();
os.write(urlParams.getBytes());
os.flush();
os.close();
InputStream is = httpURLConnection.getInputStream();
while ((tmp = is.read()) != -1) {
data += (char) tmp;
}
is.close();
httpURLConnection.disconnect();
return data;
} catch (MalformedURLException e) {
e.printStackTrace();
return "Exception: " + e.getMessage();
} catch (IOException e) {
e.printStackTrace();
return "Exception: " + e.getMessage();
}
}
}
}
package com.example.calenderscheduler;
导入android.content.Context;
导入android.content.SharedReferences;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.widget.Toast;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.OutputStream;
导入java.net.HttpURLConnection;
导入java.net.MalformedURLException;
导入java.net.URL;
公共类注册令牌Id扩展了AppCompatActivity{
字符串名称、密码、令牌;
上下文ctx=此;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
SharedReferences mPrefs=getSharedReferences(“标识符”,Context.MODE\u PRIVATE);
Name=mPrefs.getString(“Name”,null);
Password=mPrefs.getString(“Password”,null);
Token=mPrefs.getString(“Token”,null);
Toast.makeText(Reg_Token_Id.this,“Token”+Toast.LENGTH_LONG.show();
SendDeviceDetails b=新的SendDeviceDetails();
b、 执行(名称、密码、令牌);
}
类SendDeviceDetails扩展了AsyncTask{
@凌驾
受保护的字符串doInBackground(字符串…参数){
字符串数据=”;
字符串名称=参数[0];
字符串密码=参数[1];
字符串标记=参数[2];
int tmp;
试一试{
URL=新URL(“http://localhost/sample/Scheduler/register_token_userId.php");
字符串urlParams=“Name=“+Name+”Password=“+Password+”Token=“+Token;
HttpURLConnection HttpURLConnection=(HttpURLConnection)url.openConnection();
httpURLConnection.setDoOutput(true);
OutputStream os=httpURLConnection.getOutputStream();
write(urlParams.getBytes());
os.flush();
os.close();
InputStream=httpURLConnection.getInputStream();
而((tmp=is.read())!=-1){
数据+=(字符)tmp;
}
is.close();
httpURLConnection.disconnect();
返回数据;
}捕获(格式错误){
e、 printStackTrace();
return“Exception:+e.getMessage();
}捕获(IOE异常){
e、 printStackTrace();
return“Exception:+e.getMessage();
}
}
}
}
和我的php文件来获取名称、密码和令牌
<?php
require "init.php";
$Token = $_POST["Token"];
$Name = $_POST["Name"];
$Password = $_POST["Password"];
$user_id;
$Token_id;
// $Token = "fFQU08fqp98:APA91bGbLgJslCw8nN7NxvQnAV_Xz3RsRS76cn8DA2aysbVzG35yJZ9poCaxy9KkZ7SDm2ZhuhxVXJSv9POI5uSmFYZrkZ8kD79XmSP-0qAlafbyWM1gG9JW_7vdOTb-tSDitIXABDEK";
// $Name = "rajesh";
//$Password ="1995";
$Sql1 = "SELECT * FROM `user_info`
WHERE `name`='".$Name."' AND
`password`='".$Password."';";
$result1 = mysqli_query($con, $Sql1);
while($row = mysqli_fetch_array($result1))
{
$user_id = $row['id'];
}
$Sql2 = "SELECT * FROM `user`
WHERE `Token`='".$Token."'";
$result2 = mysqli_query($con, $Sql2);
while($row = mysqli_fetch_array($result2))
{
$Token_id = $row['id'];
}
$sql6 = "UPDATE user SET Employeeid = '".$user_id."' WHERE id = " . $Token_id. " ";
$result6 = mysqli_query($con, $sql6);
mysqli_close($con);
?>
设置您使用的请求方法。
这样,
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoOutput(true);
OutputStream os = httpURLConnection.getOutputStream();
错误是由于&,我忘了在字符串urlParams之间使用它们
错误代码
URL url = new URL("http://localhost/sample/Scheduler/register_token_userId.php");
String urlParams = "Name=" + name + "Password=" + password+ "Token=" + Token;
正确代码
URL url = new URL("http://localhost/sample/Scheduler/register_token_userId.php");
String urlParams = "Name="+name+"&Password="+password+"&Token="+token;
您使用POST或GET的请求方法是什么?POST@Bhavya!我不明白我犯了什么错误!请更改字符串变量命名约定。我已更改它,但未在代码中处理添加请求方法类型。httpURLConnection.setRequestMethod(“POST”);我在HttpURLConnection行HttpURLConnection=(HttpURLConnection)url.openConnection()下面的一行给出了代码;但是在setRequestMethod中显示错误如下错误:(55,34)错误:无法从静态上下文引用非静态方法setRequestMethod(字符串)。没有错误,但id未插入到tableLet us中。错误不在空格中,但您忘了在参数名称之前添加(&E)。