【问题标题】:data insertion in online database from android从android在线数据库中插入数据
【发布时间】:2016-04-10 12:22:21
【问题描述】:

我正在尝试将数据从 android 插入到在线数据库,我的应用程序没有给出任何错误以便我可以修复它,当我将我的应用程序连接到 localhost 并且它成功插入数据但当我尝试时它工作正常将数据插入在线数据库它不起作用。有人可以告诉我做错了什么吗? 在您查看我的代码之前,我希望您查看我的托管信息,以防你们认为这样做有问题。

Main Domain securekid.base.pk
FTP hostname:   ftp.base.pk
FTP username:   basep_****
MySQL hostname: sql104.base.pk
MySQL username: basep_****
Hosting Volume  vol14_2

我的数据库连接文件:

<?php
$host = "sql104.base.pk";
$user = "basep_****";
$password = "******";
$db = "basep_*****_android";
$con = mysqli_connect($host, $user, $password, $db);
if($con)
{
    echo "successful";
}
else
{
    die("error" . mysqli_connect_error());
}

?>

注册.php

<?php
require "db_connect.php";
$username =$_POST["username"];
$password =$_POST["password"];
$phone_no =$_POST["phone_no"];
$mysql_qry = "insert into user(username,password,phone_no) values('$username', '$password', '$phone_no')";

if($con->query($mysql_qry) === TRUE)
{
    echo  "Registration Successful";
}
else{
    echo "failed";
}
?>

这是 background.java 文件

class backgroundTask extends AsyncTask<String,Void,String> {
    AlertDialog alertDialog;
    Context ctx;
   // Globals session_id = Globals.getInstance();
    // Globals session_id_child = Globals.getInstance();
    backgroundTask(Context ctx) {
        this.ctx = ctx;
    }

    String reg_url;

    @Override
    protected void onPreExecute() {
        reg_url = "http://securekid.base.pk/app/register.php";
    }

    @Override
    protected String doInBackground(String... args) {

        String method = args[0];

        if (method.equals("register")) {
            String username = args[1];
            String password = args[2];
            String phone_no = args[3];
            try {
                URL url = new URL(reg_url);
                HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
                httpURLConnection.setRequestMethod("POST");
                httpURLConnection.setDoOutput(true);
                httpURLConnection.setDoInput(true);
                OutputStream OS = httpURLConnection.getOutputStream();
                BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(OS, "UTF-8"));
                String data = URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode(username, "UTF-8") + "&" +
                        URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(password, "UTF-8") + "&" +
                        URLEncoder.encode("phone_no", "UTF-8") + "=" + URLEncoder.encode(phone_no, "UTF-8");
                bufferedWriter.write(data);
                bufferedWriter.flush();
                bufferedWriter.close();
                OS.close();
                InputStream IS = httpURLConnection.getInputStream();
                IS.close();
                //httpURLConnection.connect();
                httpURLConnection.disconnect();
                return "Registration Successful";
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

【问题讨论】:

    标签: java php android mysql database


    【解决方案1】:

    在您尚未发布的代码中,您似乎正在检查浏览器是否支持 JavaScript。 Android HttpURLConnection 不处理 JavaScript,因此您的请求将失败。你会得到的结果是这样的:

    <html>
        <body>
            <script type="text/javascript" src="/aes.js" ></script>
            <script>function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f
                <d.length;f++)e+=(16>d[f]?"0":"")+d[f].toString(16);return e.toLowerCase()}var a=toNumbers("f655ba9d09a112d4968c63579db590b4"),b=toNumbers("98344c2eee86c3994890592585b49f80"),c=toNumbers("b9a6c9d5cb703e2906de146c3bad1187");document.cookie="__test="+toHex(slowAES.decrypt(c,2,a,b))+"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/"; document.cookie="referrer="+escape(document.referrer); location.href="http://securekid.base.pk/app/register.php?ckattempt=1";
                </script>
                <noscript>This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support</noscript>
            </body>
        </html>
    

    我建议查看您网站中生成该代码的部分并为您的 API 文件禁用它,因为永远不会期望 API 客户端处理 JavaScript。

    【讨论】:

    • 但我遵循了一个教程,它对他很有效
    • 我的网站上没有任何内容,我正在使用服务器作为数据库,这样我就可以将应用程序的数据上传到服务器上。
    • @user3149023 很抱歉,您肯定有其他代码正在运行。清除您的 cookie,然后自己在浏览器中访问 URL http://securekid.base.pk/app/register.php 并查看您的最终结果。你会发现你在http://securekid.base.pk/app/register.php?ckattempt=1。现在问问自己生成重定向的代码在哪里。
    • 是的,我现在明白了你的意思,但我使用的是免费域,你知道我在哪里可以禁用 javascript?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多