2-4.http通信

这篇博客详细介绍了如何使用HttpURLConnection在Java中进行HTTP通信,分别阐述了GET和POST两种方法的实现步骤。对于GET方法,包括新建URL、打开连接、设置请求方法等6个步骤。POST方法的主要区别在于参数写入HTTP包体,需通过OutputStream写入数据。文中还提供了代码示例,并提到了Android中防止主线程网络操作异常的方法以及在Manifest中添加网络访问权限的必要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                                                                              HTTP通信

使用HttpUrlConnetion类进行数据的接收和发送。传输时有两种方法可以选择:GET和POST

(1)使用GET方法,需要6个步骤

1.新建URL

-----URL url=new URL(http://192.0.1:8080/index.jsp?id=123456);

2.得到HttpURLConnection连接对象

------HttpURLConnection connection=(HttpURLConnection)url.openConnection();

3.设置该连接对象

----允许读取;   URLConnetion.setDoInput(boolean value);

----允许写入;URLConnection.setDoOutput(boolean value);;

----设置请求方法;URLConnection.setRequestMethod("GET") throws ProtocolException;

----设置超时时间;URLConnetion.setConnetionTimeout(int timeout);

----设置是否允许使用缓存;URLConnetion.setUseCaches(boolean value);

4.得到输入流

----URLConnetion.getInputStream() throws Exception;

5.从流中读取返回的结果,进行处理

----推荐BufferReader的readLine()方法

6.关闭流

-----调用close()方法

(2)使用POST方法:与GET方法不同的是,它的参数不能直接写在URL中,而是在HTTP的包体中,参数的实现通过OutputSteam写数据,其他大同小异

使用步骤:

1.新建URL对象

2.获得HttpURLConnection连接对象

3.设置连接对象,设置请求方式为POST

----HttpURLConnetion.setRequestMethod("POST");

----HttpURLConnetion.setUseCaches(false);//POST方法不可以使用缓存!!!!

4.获得输出流,写入数据

----URLConnection.getOutputStream() throws IOException

//希尔数据时,记得要对数据进行编码

----URLConnection.encode(String s,String enc) throws UnsuppoertedEncodingException//两个参数,第一个是要输入的内容,第二个是编码方式

5.获得输入流,读取返回的数据

6.关闭流

实例:(1-1)新建项目HttpURLConnection,在HttpURLConnectionActivity.java中添加如下代码请求网络数据
try{
 //创建HttpURLConnection实例对象
URL url=new URL("
http://www.renren.com/");
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
//获得输入流
InputStreamReader in=new InputStreamReader(coon.getInputStream());
//为输入创建BufferReader
BufferReader buffer=new BufferReader(in);

String inputLine=null;
String resultData=null;
//使用循环读取数据
while((inputLine=buffer.readLine())!=null){
resultData+=inputLine()+"/n";
}
//关闭输入流
in.close();
//关闭HTTP连接
conn.disconnect();
//输出数据信息
System.out.priontln(resultData);
}catch(IOException e){

}
(1-2)在onCeate()方法中添加如下代码,防止抛出NetwortOnMainThreadException异常
//设置线程政策
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskWrites()
.detectDiskReaders()
.detectNetwork()
.penaltyLog()
.build());
//设置虚拟内存政策
StrictMode.setVmPolicy(new StrickMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
(1-3)在AndroidMenifest.xml文件中添加用户权限,运行应用程序访问网络
<uses-permission:name="android.permission.INTERNET"/>
(1-4)运行程序:在logcat可以查看到人人网的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值