【发布时间】: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