我找到了一种从服务器获取数据的方法
这是我的 Android MainActivity
package com.example.mfjaleel.myPackage;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
Button btn;
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button)findViewById(R.id.button);
tv = (TextView)findViewById(R.id.tv);
btn.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
new JSONTask().execute("Ur link","parameters");
}
}
);
}
public class JSONTask extends AsyncTask<String,Void,String >{
ProgressDialog loading;
@Override
protected String doInBackground(String... params) {
HttpURLConnection connection = null;
BufferedReader reader = null;
URL url ;
try {
url = new URL(params[0]);
connection = (HttpURLConnection) url.openConnection();
//connection.connect();
connection.setRequestMethod("POST");
connection.setDoInput(true);
connection.setDoOutput(true);
HashMap<String,String > data = new HashMap<String, String>();
data.put("id",params[1]);
OutputStream os = connection.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
writer.write(getPostDataString(data));
writer.flush();
writer.close();
os.close();
int responseCode=connection.getResponseCode();
String response = "";
if (responseCode == HttpURLConnection.HTTP_OK) {
reader=new BufferedReader(new InputStreamReader(connection.getInputStream()));
response = reader.readLine();
}
else {
response="Error Registering";
}
return response;
} catch (MalformedURLException e) {
e.printStackTrace();
return "MalformedURLException Exception";
} catch (IOException e) {
e.printStackTrace();
return "IO Exception";
}
//return "Error";
}
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(MainActivity.this, "Please Wait", null, true, true);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
loading.dismiss();
tv.setText(s);
}
private String getPostDataString(HashMap<String, String> params) throws UnsupportedEncodingException {
StringBuilder result = new StringBuilder();
boolean first = true;
for(Map.Entry<String, String> entry : params.entrySet()){
if (first)
first = false;
else
result.append("&");
result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
result.append("=");
result.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
}
return result.toString();
}
}
}
这是我在服务器中的 PHP 脚本
function getAll($id){
$con = new mysqli("localhost","root","password","db_name");
if($con->connect_error){
die("Connection Failed ".$con->connect_error);
}
$sql = "SELECT * from TABLE_NAME WHERE id = $id";
$query = $con->query($sql);
while($r = $query->fetch_assoc()){
$output[] = $r;
}
$con->close();
return json_encode($output);
}
$x = 2;
if($_SERVER['REQUEST_METHOD']=='POST'){
$x = $_POST["id"];
}
$p = getAll($x);
echo $p;
感谢 @mat 和 @greenapps 的帮助