大家好,我当前的Android应用程序上有一个活动,里面有一个webview。我想知道如何从我的Android应用程序上的变量中获取并存储来自该网站上的php的变量(是的,我控制网站,并具有完整的编辑功能)。
答案 0 :(得分:5)
我会解释一般需要做的事情。首先,在你的Android应用程序方面,应该有这样的代码。
1)在你的机器人方面
String url = "www.yoururl.com/yourphpfile.php";
List<NameValuePair> parmeters = new ArrayList<NameValuePair>();
parameters.add(new BasicNameValuePair("category",category));
parameters.add(new BasicNameValuePair("subcategory",subcategory));// These are the namevalue pairs which you may want to send to your php file. Below is the method post used to send these parameters
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url); // You can use get method too here if you use get at the php scripting side to receive any values.
httpPost.setEntity(new UrlEncodedFormEntity(parameters));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8); // From here you can extract the data that you get from your php file..
StringBuilder builder = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
builder.append(line + "\n");
}
is.close();
json = sb.toString(); // Here you are converting again the string into json object. So that you can get values with the help of keys that you send from the php side.
String message = json.getString("message");
int success = json.getInt("success"); // In this way you again convert json object into your original data.
2)在你的php端
$response = array();
// check for post fields
if (isset($_POST['category']) && isset($_POST['subcategory'])) {
$category = $_POST['category'];
$subcategory = $_POST['subcategory'];
// include db connect class
require_once __DIR__ . '/db_connect.php';
// connecting to db
$db = new DB_CONNECT();
// mysql inserting a new row
$result = mysql_query("INSERT INTO categorytable(category, subcategory) VALUES('$category', '$subcategory')");
// check if row inserted or not
if ($result) {
// successfully inserted into database
$response["success"] = 1;
$response["message"] = "Data inserted into database.";
// echoing JSON response
echo json_encode($response);// Here you are echoing json response. So in the inputstream you would get the json data. You need to extract it over there and can display according to your requirement.
}
正如你所说,你对php非常熟练,你可能已经发现php中的上述内容尽可能简单并且不安全。所以,你可以按照一些pdo或其他一些安全的方式在php端编写代码。确保你在asynctask的android端包含代码,以便在你需要的任何地方运行在单独的线程中。希望这会有所帮助。
答案 1 :(得分:0)
您的Android应用程序需要向您的PHP应用程序发出请求,在您设置PHP脚本的URL处返回您需要的数据。
您可以直接返回HTML,或者如果您只想返回数据并使用Android应用,JSON是一种出色的数据传输格式。 XML也很受欢迎,但是JSON更加精简并且现在得到了很好的支持。