java - Android POST 请求无法正常工作
问题描述
我正在使用以下方法通过 Post 请求从服务器获取时间。
String result = "";
URL url = null;
InputStream stream = null;
HttpURLConnection urlConnection = null;
try {
url = new URL("http://192.168.118.2/myapi");
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("POST");
urlConnection.setDoOutput(true);
String data = URLEncoder.encode("time", "UTF-8")
+ "=" + URLEncoder.encode("Submit", "UTF-8");
urlConnection.connect();
OutputStreamWriter wr = new OutputStreamWriter(urlConnection.getOutputStream());
wr.write(data);
wr.flush();
stream = urlConnection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "UTF-8"), 8);
String line = "";
while((line = reader.readLine()) != null)
result += line;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (urlConnection != null) {
urlConnection.disconnect();
}
}
Toast.makeText(this, result, Toast.LENGTH_SHORT).show();
这是php脚本
<?php
if(isset($_POST["time"]))
echo "Time";
else
echo "Invalid Request";
但是当我调用 post 方法时,我得到了“无效请求”。我几乎搜索了每个stackoverflow线程,但没有一个工作,我真的想知道问题出在哪里。
解决方案
有几件事要尝试。
1)将以下内容添加到您的清单中。
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
2)更改您的PHP文件
<?php
$time = urldecode($_POST['time']);
if($time === NULL) {
echo "invalid";
} else {
echo "time";
}
?>
推荐阅读
- php - php中SQL等效的NOT IN运算符
- php - 为什么我的 sql 语句适用于命令行,但不适用于 PHP 上的 mysqli_query?
- java - 在保留键盘上的回车图标的同时,对在 android 中按下的 EditText 执行操作?
- c - 带有修饰符的 Doxygen 和 C 函数名称
- amazon-web-services - 无法通过公共链接访问 s3 中存储的电子邮件
- python - 如何从列表中获取一些值
- excel - 尝试使用动态下拉菜单在输入框中填充文本
- javascript - JavaScript 中从数组到复杂字符串格式
- python - 如何跳过for循环中的错误行
- ios - defaultNavigationOptions 中的默认背景颜色