【问题标题】:ANDROID - How to display value of database mysql php into textview in android studioANDROID - 如何在 android studio 中将数据库 mysql php 的值显示到 textview 中
【发布时间】:2017-02-28 02:05:11
【问题描述】:

我一直在寻找一些参考资料,以使用 JSON 将我的值数据库显示到 android 中,但我很难找到关键字, 这是我要尝试的所有代码, 请CMIIW,我已将我的代码和数据库放入托管程序中以方便here

php代码

dbconfig.php

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "data_kuesioner";

send_data.php

<?php
include 'dbconfig.php';
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT * FROM pertanyaan";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row[] = $result->fetch_assoc()) {

       $json = json_encode($row);
    }
} else {
    echo "0 results";
}
echo $json;
$conn->close();
?>

安卓代码

MainActivity.java

package flix.yudi.okhttp;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

import java.io.IOException;
import java.util.concurrent.ExecutionException;

import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

public class MainActivity extends AppCompatActivity {
    private EditText edtText;
    private TextView outputText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        edtText = (EditText) findViewById(R.id.editText1);
        outputText = (TextView) findViewById(R.id.textView1);
    }

    public void downloadUrl(View view) {

        String url = "http://" + edtText.getText().toString();
        OkHttpHandler handler = new OkHttpHandler();
        String result = null;
        try {
            result = handler.execute(url).get();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ExecutionException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        outputText.append(result + "\n");
    }
}

OkHttpHandler.java

package flix.yudi.okhttp;
import android.os.AsyncTask;

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;


public class OkHttpHandler extends AsyncTask<String, Void, String> {

    OkHttpClient client = new OkHttpClient();
    @Override
    protected String doInBackground(String... params) {
        Request.Builder builder = new Request.Builder();
        builder.url(params[0]);
        Request request = builder.build();
        try {
            Response response = client.newCall(request).execute();
            return response.body().string();
        } catch (Exception e) {
        }
        return null;
    }
}

但是当我运行程序时,应用程序会在下面显示另一个界面

【问题讨论】:

  • 您的网址返回的是 html,而不是 json。如果查询找不到数据,您的脚本也会输出非 json。
  • 我找到了一些代码来获取 json here,但我不知道我应该把代码“public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8" ); ",先生,您有简单的获取 json 的代码吗?

标签: java php mysql json android-studio


【解决方案1】:

您的 url 返回“text/html”,您可以尝试将此标头放入您的 send_data.php 以将返回更改为 json。

header('Content-Type: application/json; charset=utf-8');

【讨论】:

    猜你喜欢
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多