【问题标题】:Is there an easier, simple way to connect android studio to local host?有没有更简单的方法将 android studio 连接到本地主机?
【发布时间】:2019-04-20 14:42:03
【问题描述】:

我正在尝试制作一个注册请求脚本。正如 RiggsFolly 之前提到的,我只是不断重复自己。那么,我想知道如何将 Android Studio 连接到我的 localhost 服务器?我刚刚被告知 params 可能不是解决方案,而且我已经看到其他答案对于这个简单的任务来说很复杂。

params 似乎没有正确发送数据。所以我只想知道应该用什么代替参数将数据发送到 php 脚本。现在我看到了这个脚本,它看起来使用了一个我无法导入的外部库。

HttpClient httpclient = new DefaultHttpClient();
    HttpResponse response = httpclient.execute(new HttpGet(URL));
    StatusLine statusLine = response.getStatusLine();
    if(statusLine.getStatusCode() == HttpStatus.SC_OK){
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        response.getEntity().writeTo(out);
        String responseString = out.toString();
        out.close();
        //..more logic
    } else{
        //Closes the connection.
        response.getEntity().getContent().close();
        throw new IOException(statusLine.getReasonPhrase());
    }

我无法导入 http 库,所以我需要知道它们是否是使用 http 请求的内置方式。

目前,我的 RegisterRequest 脚本如下所示;

public class RegisterRequest extends StringRequest {

    private static final String REGISTER_REQUEST_URL = "http://192.168.*.*:80/phptesting/Register.php";
    private Map<String, String> params;
    public RegisterRequest(String username, String password,String isAdmin, Response.Listener<String> listener){
        super(Method.POST, REGISTER_REQUEST_URL,listener,null);
        System.out.println(username);
        System.out.println(password);
        System.out.println(isAdmin);
        params = new HashMap<>();
        params.put("username",username);
        params.put("password",password);
        params.put("isAdmin",isAdmin+"");
    }

    public Map<String, String> getparams() {
        return params;
    }
}

现在,我使用 params.put 将参数输入到 php 脚本中,但 php 似乎没有收到任何内容,甚至在我尝试引用它应该得到的内容时吐出未定义的索引错误。

这是 php 脚本。这很简单,但它只是一个乱七八糟的代码,应该将 $_POST 数据放入“cresidentials”数据库。其余代码只是人们出于调试原因希望我放入的大杂烩。

<?php
    $db_host = 'localhost:3306';
    $db_user = 'root';
    $db_pass = '';
    $db_name = 'test';
    var_dump($_POST["username"]);//line 6
    $con = mysqli_connect($db_host,'root',$db_pass,$db_name);
    if($con){
        echo "connection successful";
    }
    if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
    }
    if(isset($_POST["isAdmin"]) &&  isset($_POST["username"]) && isset($_POST["password"]))
{
    $username = $_POST["username"];
    $password = $_POST["password"];
    $isAdmin = $_POST["isAdmin"];

    $statement = mysqli_prepare($con, "INSERT INTO cresidentials (username,password,isAdmin) VALUES (?, ?, ?)");
    mysqli_stmt_bind_param($statement,'sss',$username,$password,$isAdmin);
    mysqli_stmt_execute($statement);

    if(!$statement) 
    {
         printf("Prepare failed: %s\n", mysqli_error($con)); 
    }

    echo "success";
}
else
 echo "values not set";
?>

$_POST 出现未定义的索引错误。不,RiggsFolly,仅仅因为我说未定义的索引并不意味着您可以尝试将这个问题与我的另一个问题相混淆。不要那么做。

我不相信我需要将我的 CreateUser 脚本放在这里,除非您想将其参数更改为 jsonobjects。我想知道任何人将android studio连接到php并在其中发布数据的简单方法。并且尽量不要进行大规模的加密交易,我对此很陌生。顺便说一句,输出是这样的;

/System.out: ahhh /System.out: ahhhh /System.out: Admin /Response Value::
注意:未定义索引:用户名在 \Register.php 在第 6 行 空值 未设置连接成功值

????????????????????????感谢所有帮助,谢谢。?????????????????? ??????????

这是里格斯编辑我的整个问题的部分

【问题讨论】:

  • 在android中你定义和设置params,但我看不到你实际使用它们/将它们传递给某些东西,或者通过getparams()获取它们。你在哪里以及如何使用RegisterRequest
  • @Jeff 我认为 params 是一个内置函数。因此为什么当我使用它时它会变成蓝色,所以我认为它是一个关键字。似乎 params 是在 URL 之后首先引入的
  • @Jeff RegisterRequest 由 CreateUser 使用。一个单独的 java 类。如果你愿意的话,我会把你链接到我以前的一个过时的问题中,里面有脚本

标签: java php android android-studio


【解决方案1】:

执行此操作时,您发送的 GET 请求完全没有任何参数:

httpclient.execute(new HttpGet(URL));

从您的“请求”类来看,我猜您正在尝试使用 Volley。在 Volley 中,您必须创建一个 RequestQueue 并将您的请求添加到其中。请参阅此处的指南:https://developer.android.com/training/volley/

【讨论】:

  • 我的 CreateUser 类中有一个请求队列。我没有发布脚本,因为问题已经很长了。而且,我尝试使用 HttpClient,但没有弹出任何内容。我被告知它是我必须添加的外部函数,但我无法添加它。
  • 如果你能告诉我用什么替换什么,我将不胜感激,因为老实说,我不知道过去 3 周我在这个项目上做了什么,我会失败的很快。提前感谢您的帮助
  • 如果您使用的是Volley,则不需要HttpClient。如果您使用HttpClient,则不需要Volley。你应该尽量不要在你的项目中使用一个以上的 http 客户端库,因为它只会让人感到困惑。现在,发送使用requestQueue.add 发送请求的android 应用程序版本有什么问题?您可能应该将其作为一个单独的问题发布
  • 我遇到的问题是这个;是的,我正在使用 Volley,但它似乎没有将数据发布到 php 脚本。它运行脚本,但 $_POST 什么也得不到
猜你喜欢
  • 1970-01-01
  • 2014-08-26
  • 1970-01-01
  • 2019-12-16
  • 1970-01-01
  • 1970-01-01
  • 2018-04-27
  • 2014-11-06
相关资源
最近更新 更多