如何从Android发送http post请求?

时间:2016-07-16 05:35:45

标签: php android http-post

我是Android的新手,现在我已经厌倦了搜索有关Android HTTP请求的最佳教程。

我正在尝试将这些参数发送到phpServer,

  • Name =“some name”

  • email =“some email”

我们可以在MainActivity.java文件中执行此操作吗?这需要任何jar(库)文件吗? 欢迎任何建议。

我试过了,

@Override
public void onClick(View view) {
    if(view == btnSubscribe){
        HttpURLConnection client = null;
        try {
            URL url = new URL("http://www/somewebsite.com/API/SUBSCRIBE");
            client = (HttpURLConnection) url.openConnection();
            client.setRequestMethod("POST");
            client.setRequestProperty("name","test one");
            client.setRequestProperty("email","text@gmail.com");
            client.setDoOutput(true);

            OutputStream outputPost = new BufferedOutputStream(client.getOutputStream());
            outputPost.flush();
            outputPost.close();
            client.setChunkedStreamingMode(0);

        } catch(MalformedURLException error) {
            showError("Handles an incorrectly entered UR");
        }
        catch(SocketTimeoutException error) {
            showError("Handles URL access timeout");
        }
        catch (IOException error) {
            showError("Handles input and output errors");
        }finally {
            if(client != null)
            client.disconnect();
        }
    }
}

2 个答案:

答案 0 :(得分:6)

我正在使用此代码并正常工作。试试这个代码。

public static String httpPostRequest(Context context, String url, String email) {
        String response = "";
        BufferedReader reader = null;
        HttpURLConnection conn = null;
        try {
            LogUtils.d("RequestManager", url + " ");
            LogUtils.e("data::", " " + data);
            URL urlObj = new URL(url);

            conn = (HttpURLConnection) urlObj.openConnection();
            conn.setRequestMethod("POST");
            conn.setDoOutput(true);
            OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());

            data += "&" + URLEncoder.encode("Email", "UTF-8") + "="
                    + URLEncoder.encode(email, "UTF-8");


            wr.write(data);
            wr.flush();

            LogUtils.d("post response code", conn.getResponseCode() + " ");

            int responseCode = conn.getResponseCode();



            reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            StringBuilder sb = new StringBuilder();
            String line = null;

            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }

            response = sb.toString();
        } catch (Exception e) {
            e.printStackTrace();
            LogUtils.d("Error", "error");
        } finally {
            try {
                reader.close();
                if (conn != null) {
                    conn.disconnect();
                }
            } catch (Exception ex) {
            }
        }
        LogUtils.d("RESPONSE POST", response);
        return response;
    }

答案 1 :(得分:0)

首先,现在不推荐使用最多的httpClint,所以如果现在可以使用httpUrlConnection。

你可以参考 here

如果您想使用库,那么您可以使用

这两个是最好的图书馆。

干杯