簡體   English   中英

如何正確將參數傳遞給PHP文件

[英]How can I pass parameters to PHP files correctly

我在將字符串參數發送到PHP文件以從編輯文本中下載插入歌曲名稱的歌曲時遇到問題。 我不明白我收到的錯誤。 先謝謝您的幫助!

logcat的:

Response from url: {"error":false,"message":"Musics fetched successfully.","musics":[]}

我不知道為什么數組為空。

如果我使用其他客戶端傳遞歌曲名稱而不是URL,則PHP文件有效。 這是我的代碼:

機器人側面:

class GetContacts extends AsyncTask<Void, Void, Void> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            //Toast.makeText(MainActivity.this, "Json Data is downloading", Toast.LENGTH_LONG).show();
            canzone = editText.getText().toString();
        }

        @Override
        protected Void doInBackground(Void... arg0) {

            HttpHandler sh = new HttpHandler();
            // Making a request to url and getting response
            String url = "http://blabla.org/AndroidMusicDownload/downloads/getMusic.php?canzone=" + canzone;
            String jsonStr = sh.makeServiceCall(url);

            Log.e(TAG, "Response from url: " + jsonStr);
            if (jsonStr != null) {
                try {
                    JSONObject jsonObj = new JSONObject(jsonStr);


                   /* title=jsonObj.getString("title");

                    link=jsonObj.getString("link");
                    HashMap<String, String> contact = new HashMap<>();

                    contact.put("title", title);
                    contact.put("link", link);

                    System.out.println("LINK: "+link);
                    contactList.add(contact);
*/
                    Toast.makeText(MainActivity.this, jsonObj.getString("message"), Toast.LENGTH_SHORT).show();

                    JSONArray jsonArray = jsonObj.getJSONArray("musics");

                    for (int i = 0; i < jsonArray.length(); i++) {

                        //Declaring a json object corresponding to every pdf object in our json Array
                        JSONObject jsonObject = jsonArray.getJSONObject(i);
                        //Declaring a Pdf object to add it to the ArrayList  pdfList
                        // Pdf pdf  = new Pdf();
                        // String pdfName = jsonObject.getString("name");
                        //String pdfUrl = jsonObject.getString("url");
                        //pdf.setName(pdfName);
                        //pdf.setUrl(pdfUrl);
                        //pdfList.add(pdf);
                        canzone_cantante = jsonObject.getString("canzone_cantante");

                    }

                  /*  pdfAdapter=new PdfAdapter(MainActivity.this,R.layout.list_layout, pdfList);

                    listView.setAdapter(pdfAdapter);

                    pdfAdapter.notifyDataSetChanged();*/
                    HashMap<String, String> contact = new HashMap<>();

                    // adding each child node to HashMap key => value
                    contact.put("canzone_cantante", canzone_cantante);
                    //contact.put("email", email);
                    // contact.put("mobile", mobile);
                   /* Toast.makeText(getApplicationContext(),
                            "LINK: "+link ,
                            Toast.LENGTH_LONG).show();*/
                    // adding contact to contact list
                    System.out.println("LINK: " + canzone_cantante);
                    contactList.add(contact);

                } catch (final JSONException e) {
                    Log.e(TAG, "Json parsing error: " + e.getMessage());
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(getApplicationContext(),
                                    "Json parsing error: " + e.getMessage(),
                                    Toast.LENGTH_LONG).show();
                        }
                    });

                }

            } else {
                Log.e(TAG, "Couldn't get json from server.");
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(getApplicationContext(),
                                "Couldn't get json from server. Check LogCat for possible errors!",
                                Toast.LENGTH_LONG).show();
                    }
                });
            }

            return null;
        }

PHP代碼:

<?php

 if($_SERVER['REQUEST_METHOD']=='POST'){
 $canzone = $_POST['canzone'];
require_once 'dbDetails.php';
$con = mysqli_connect(DB_HOST,DB_USERNAME,DB_PASSWORD,DB_NAME) or die("Unable to connect");

  $sql = "SELECT * FROM music where canzone = '$canzone'";
$result = mysqli_query($con,$sql);

//response array
$response = array();

$response['error'] = false;

$response['message'] = "Musics fetched successfully.";

$response['musics'] = array();

//traversing through all the rows

while($row =mysqli_fetch_array($result)){
    $temp = array();
    $temp['id'] = $row['id'];
    $temp['canzone'] = $row['canzone'];
    $temp['canzone_cantante'] = $row['canzone_cantante'];
    $temp['url'] = $row['url'];
    array_push($response['musics'],$temp);
}

echo json_encode($response);
}

您正在使用get request(inAndroid)發送canzone參數,但是嘗試通過POST全局變量(在php中)獲取它,因此我建議將您的php從$canzone= $_POST['canzone']; $canzone= $_GET['canzone'];

編輯也在這里更改if語句

if($_SERVER['REQUEST_METHOD']=='POST'){

if($_SERVER['REQUEST_METHOD']=='GET'){

您將歌曲名稱發送為GET,而不是發布。

另外,如果歌曲名稱中包含多個單詞,則還需要對歌曲名稱進行urlencode。

干杯:)

嘗試替換此行

 $canzone = $_POST['canzone'];

 $canzone = $_REQUEST['canzone'];

據我了解,您從Android App中發布了這樣的請求

String url = "http://blabla.org/AndroidMusicDownload/downloads/getMusic.php?canzone=" + canzone;

但是有一個問題,您在URL中發送了“ canzone”,所以這是GET參數,在PHP中,您可以從$ _POST抓取此變量,只需將$ _POST更改為$ _GET,就可以了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM