您的位置:首页 > 理论基础 > 计算机网络

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

2016-03-27 15:56 513 查看
现在的开发一般都分为客户端和服务端开发,主要是服务端提供统一的接口,在客户端不同的情况下,服务端照样维持相同的接口,省去了许多开发成本。但对于客户端和服务端的连接就显得比较重要,现在通讯一般有两种方式,一种是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”,可以去百度,这个表示你那个服务端的文件类型。希望文章能对你们有所帮助。(主要还是为了给我自己看)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: