java或者android通过http获取服务端数据

现在的开发一般都分为客户端和服务端开发,主要是服务端提供统一的接口,在客户端不同的情况下,服务端照样维持相同的接口,省去了许多开发成本。但对于客户端和服务端的连接就显得比较重要,现在通讯一般有两种方式,一种是http请求,另一种是socket通信。这篇文章主要说明http请求,看到许多人写了文章,我觉得讲的都差不多,但是主要是服务端代码没有给我们,造成很多的不理解。
先看一个例子:服务端代码,文件名test.php,主要测试post和get参数传递

<?php if($_GET["name"]=="wo") echo "我们是可以的"; if($_POST['username']=="zcl") echo "post传参成功"; ?>

客户端代码,这里主要通过post传递参数(现在开发很少使用get,但如果想学,可以查一下,比post更简单),一般也有两种类可以实现HttpURLConnection和HttpClient,但现在官方不推荐使用HttpClient这个类,所以这里我们采用HttpURLConnection:

public static void main(String args[]) {
        HttpURLConnection conn = null;
        try {
            URL url = new URL("http://192.168.246.129/test.php");

            // 1.得到HttpURLConnection实例化对象
            conn = (HttpURLConnection) url.openConnection();
            // 2.设置请求方式
            conn.setRequestMethod("POST");

            conn.setDoOutput(true);
            conn.setDoInput(true);
            // Post 请求不能使用缓存

            conn.setUseCaches(false);
            conn.setInstanceFollowRedirects(true);
            conn.setRequestProperty("contentType", "text/html");     
            conn.connect();

            DataOutputStream out = new DataOutputStream(conn.getOutputStream());
            String content ="username="+URLEncoder.encode("zcl", "utf-8");
            out.writeBytes(content);

            out.flush();

            out.close();
            BufferedReader reader =new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8"));
              //设置编码,否则中文乱码 
            String line = "";
            System.out.println(reader);
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            reader.close();
            conn.disconnect();

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 6.释放资源
            if (conn != null) {
                // 关闭连接 即设置 http.keepAlive = false;
                conn.disconnect();
            }
        }

    }
}

发现输出:post传参成功。

这个只是简单的例子,更加复杂的功能需要我们自行去研究。
对于这个代码中的”contentType”,可以去百度,这个表示你那个服务端的文件类型。希望文章能对你们有所帮助。(主要还是为了给我自己看)

你可能感兴趣的:(java,android,http,服务端,post)