- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要将登录/注册数据从 Android 应用程序传递到本地主机上的 mysql 数据库。我仍在学习过程中,上周遇到了这个问题。我在 Stack Overflow 上阅读了数十页、问题和答案,并尝试了一切,但我就是无法让它发挥作用。你能指出我的代码中的问题吗,我对 php 和 JSON 仍然是新手。
Android、Activity 和 AsyncTask 类:
package com.example.mario.datadrivenassignmenttwo;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
public class DbManager extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.register);
}
public void register(View v) {
EditText uname = (EditText) findViewById(R.id.username);
EditText pw = (EditText) findViewById(R.id.password);
String username = uname.getText().toString();
System.out.println("username is: " + username);
String password = pw.getText().toString();
System.out.println("password is: " + password);
Uploader task = new Uploader();
task.execute(new String[] { "http://10.0.2.2/user_db/senddata.php", username, password });
}
public class Uploader extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
/*
String response = "Finished";
try {
postHttpContent(params[0],params[1],params[2]);
} catch (IOException e) {
Log.e("error", e.toString());
}
return response;
*/
try {
String urlParam = params[0];
String username = params[1];
String password = params[2];
String charset = java.nio.charset.StandardCharsets.UTF_8.name();
String query = String.format("username=%s&password=%s", URLEncoder.encode(username, charset), URLEncoder.encode(password, charset));
/*
URLConnection conn = new URL(urlParam).openConnection();
conn.setDoOutput(true);
conn.setRequestProperty("Accept-Charset", charset);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + charset);
OutputStream output = conn.getOutputStream();
output.write(query.getBytes(charset));
output.flush();
output.close();
*/
URL url = new URL(urlParam);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());
writer.write(query);
writer.close();
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
System.out.println("It's ok!");
System.out.println(query);
} else {
System.out.println("Error code there");
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "Finished";
}
@Override
protected void onPostExecute(String result) {
Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG).show();
}
}
}
还有我的 PHP:
<?php
// connect to database
$hostname = "localhost";
$username = "root";
$password = "root";
$dbname = "user_db";
$link = new mysqli($hostname, $username, $password, $dbname);
// get the JSONArray the app sends
$contents = file_get_contents('php://input');
$jsonArray = json_decode($contents, true);
$jsonCount = count($jsonArray);
for ($i = 0; $i < $jsonCount; $i++) {
$item = $jsonArray[$i];
$itemUsername = utf8_decode($item['username']);
$itemPassword = utf8_decode($item['password']);
// parse the other json attributes here like the one above
$sql = "INSERT INTO users (username, password) VALUES ('$itemUsername', '$itemPassword')";
if ($link->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $link->error;
}
}
$link->close();
?>
有很多带注释的代码,这就是我尝试过的所有代码,还有一些其他代码,但没有任何效果。我还尝试将所有连接和其余部分放入一个方法中,并在 AsyncTask 类中调用该方法,但也失败了。由于我不懂 PHP,所以我不确定问题是出在我的 Android 代码还是 PHP 文件中。
提前非常非常感谢。
最佳答案
首先您需要了解错误代码。通常 400 的错误代码意味着您以某种方式访问了服务器,但您访问资源受到限制,或者只是您通过提供错误的数据发出了错误的请求。错误在 500 左右,这些通常是严重错误。这表明您的服务器代码有问题。尽管请注意这一点,因为理解这一点很重要。在本地主机中进行测试时,您需要公开您的服务器的 IP 来处理请求,否则您将无法访问本地主机服务器。如果您是新手,像 Ngrok 这样的结帐工具将帮助您更快地公开您的 IP,以便您可以完成 API。祝你好运!
关于php - Android 和 PHP : POST-ing data from Android to mysql db using PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46458597/
以下片段的效果之间有什么区别(如果有的话): cout << "Some text" << s1 << "some more text\n"; cout << "Some text" + s1 + "
在解释器模式下运行 python 时,什么是 more-ing 或 less-ing 多行输出的最佳替代方案? 假设,存在一个对象变量foo,它有很多属性。 dir(foo) 会转储到屏幕上。我们无法
在阅读“Lucene in Action 2nd edition”时,我看到了关于 Filter 的描述。可用于在 Lucene 中进行结果过滤的类。 Lucene 有很多过滤器重复 Query类。例
为了满足我对 C 知识的渴求,在连接到我的家庭网络的两个 linux 机器上,我正在编写一个基本的 telnet,它包含 send() 和 recv( ) 的字符串(只是为了获得套接字和线程的一些经验
给定以下三个简单函数: func twice_Array_of_Int(a: [Int]) -> [Int] { return a + a } func twice_Array_of_T(a:
如我的 previous question 中所述,我正在尝试在功能上制作一些有点像向导的东西。我已经确定了一个单独的框架,并添加了一个sizer。我为希望用户看到的每个屏幕构建面板,将它们添加到框架
据我了解,range-v3 库的 View 操作(目前需要 C++17,但要成为 C++20 中 STL 的正式部分)提供了可链接的类 STL 算法,这些算法是延迟计算的。作为实验,我创建了以下代码来
如何选择来自一位特定作者的所有项目?可能这样吗?或者,如果我也想要很多项目类型和项目包(项目有很多项目),我该如何编辑实体? 元素 /** * @ORM\Table() * @ORM\Entity
我想选择以正则表达式结尾的单词,但我想排除以 thing 结尾的单词。例如: everything running catching nothing 这几个词中,选running和catching,排
使用 Julia 1.5.3 和 Julia 1.6.0 两个版本似乎都不支持 & 用于 BitArrays。 我有两个 BitArray,例如 x = BitArray([1,0,1]) 和 y=B
我有一个读取二进制文件然后使用 struct.unpack() 解压文件内容的函数。我的功能工作得很好。如果/当我使用长的“格式”字符串解压缩整个文件时,它会更快。问题是有时字节对齐会发生变化,因此我
阅读维基百科上的“ARM 架构”,发现以下说法: Registers R0-R7 are the same across all CPU modes; they are never banked. R
您好,我需要 ssh 到一个 IP 地址并通过 shell 脚本运行我的 Java 代码我就是这样做的 ssh $LINE java -Djava.library.path=/N/u/sbpatil/
该程序应该读取字符串输入的值并返回结果。 但是,当我使用 System.out.println(Arrays.toString(stack.toArray())); 为了检查堆栈在最后甚至在程序期间的
在 Alpine 镜像中构建的 GO 可执行文件存在一个奇怪的行为,其中标准 LD_PRELOAD 功能无法正常工作。 看起来像 构造函数未被调用 由动态加载器! 我有一个示例 go 应用程序(get
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度的了解。包括尝试的解决方案、为什么它们不起作用以及预期结果
我在下面写这段代码,发现了这个奇怪的行为: #include #include #include using namespace std; int main() { map map1;
我对 JS 的 .sort() 函数理解得很好,对多维数组的理解也比较松散,但我有点卡住了。这是我得到的: var player1 = ["bob", 20]; var player2 = ["jon
在 python 中有更好的方法吗?: ((w.endswith('<') or w.endswith('')) 也许可以使用任何 最佳答案 字符串上的 endswith 方法可以将元组作为参数:
在 Javascript 中,有没有一种方法可以从数组中选择包含某些内容的单词。例如,["swimming", "basketball", "chess", "rowing"],我只想选择包含“-in
我是一名优秀的程序员,十分优秀!