首页 > 解决方案 > 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线程,但没有一个工作,我真的想知道问题出在哪里。

标签: javaandroidhttppost

解决方案


有几件事要尝试。

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";
    }
?>

推荐阅读