【问题标题】:Accessing mySQL on WAMP from Android从 Android 访问 WAMP 上的 mySQL
【发布时间】:2014-07-16 23:44:13
【问题描述】:

我无法理解如何准确配置 WAMP 以通过 Android 应用程序远程(而非 LAN)访问我使用它创建的 SQL 数据库。 我知道我不应该直接从应用程序连接到数据库,而是使用 PHP 脚本来查询数据库并返回结果。 我不明白的是所有这些是如何组合在一起的,我在哪里放置 PHP 脚本,我如何访问它们,我如何允许并连接到网络服务器以从数据库中获取数据。

我已经关注并搜索了很多关于这方面的教程,但它们似乎都只处理在 localhost 中使用 wamp,我可以在本地成功访问数据,但我不知道如何设置所有这些以便我可以查询来自我的 android 设备上任何 Internet 连接的数据库。

非常感谢任何有关如何实现这一目标的建议。

【问题讨论】:

  • 如果您家里有静态 IP,您可以在防火墙中打开一个端口,然后使用您的公共 IP 地址访问该站点。或者,更好的选择是购买域名并支付虚拟主机费用,然后将您的 php 代码放在托管公司的服务器上。 IE。搜索“php托管”
  • @developerwjk 感谢您的评论,在这里提问真的是最后的手段,所以我很高兴得到帮助。我已经有一个域,但我正在使用免费托管 (000webhost) 这有关系吗?我知道我应该知道更多,但至少与我在谷歌上找到的内容相比,这方面的教程很少,或者他们遗漏了诸如虚拟主机和端口转发之类的细节。如果你能抽出一些时间,我真的很感激一个“菜鸟”一步一步的指南,从数据库到网络主机再到安卓。那真的会“让我开心”。
  • 免费托管通常会将广告服务器端附加到您的 HTML 输出中,如果您的 Android 代码正在寻找特定响应并且响应中包含所有这些额外的广告内容,这可能会搞砸事情。跨度>
  • @developerwjk 好的,你能推荐一个好而不贵的主机吗?你也可以在这里给出一个答案,其中包括“先做这个然后做那个等等”我不是在要求代码,而是在寻求指导......谢谢你的帮助

标签: java php android webserver wamp


【解决方案1】:

您必须将您的 php 脚本上传到您的服务器:

例如:您的 php 位于:myserver.com/myscript.php

在您的 Android 应用程序中,您发布变量,并将您的 php 脚本与 HttpClient 连接:

    URL_TO_YOUR_SCRIPT = "myserver.com/myscript.php";
        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("userId", userId));

    HttpClient httpclient = new DefaultHttpClient();
    // specify the URL you want to post to
    HttpPost httppost = new HttpPost(URL_TO_YOUR_SCRIPT);
    try {
        // create a list to store HTTP variables and their values
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));
        HttpResponse response = httpclient.execute(httppost);
        StatusLine statusLine = response.getStatusLine();
        if (statusLine.getStatusCode() == HttpURLConnection.HTTP_OK) {
            HttpEntity getResponseEntity = response.getEntity();
            return getResponseEntity.getContent();

        } else {
            Log.e("ERROR", statusLine.getStatusCode() + "");
            HttpEntity getResponseEntity = response.getEntity();
            return getResponseEntity.getContent();
        }

    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

在你的 php 中:

<?
    $userId=$_REQUEST['userId'];
    ....
   // in general you return a json string to get status and result
?>

【讨论】:

    猜你喜欢
    • 2015-06-02
    • 2015-11-18
    • 1970-01-01
    • 2016-08-08
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 2020-03-27
    相关资源
    最近更新 更多