JDK中的URLConnection参数详解
http://www.blogjava.net/supercrsky/articles/247449.html
今天要开始准备我自己项目的技术学习还有需求建立。。。。
因为项目需要用到关于android和服务器相互传递object对象数据,所以我就天就学习了一下相关的操作。。。
首先是数据对象,在android和java ee的项目中都有的。。。
Data类
public class Data implements Serializable
{
/**
*
*/
private static final long serialVersionUID = 1L;
String text1;
String text2;
public String getText1()
{
return text1;
}
public void setText1(String text1)
{
this.text1 = text1;
}
public String getText2()
{
return text2;
}
public void setText2(String text2)
{
this.text2 = text2;
}
}
在android客户端的代码:
说明:
data.setText1(string1);
data.setText2(string2);
这两句话都是一个bean,设置数据的。。。用于测试之用
//HttpURLConnection的方式,传递对象
String url1 = "http://10.0.2.2:8080/ServerTest1/servlet/Test2";
//此处的urlConnection对象实际上是根据URL的
// 请求协议(此处是http)生成的URLConnection类
// 的子类HttpURLConnection,故此处最好将其转化
// 为HttpURLConnection类型的对象,以便用到
// HttpURLConnection更多的API.如下:
HttpURLConnection conn = (HttpURLConnection) new URL(url1).openConnection();
//设置连接时间
conn.setConnectTimeout(15000);
//设置方法
conn.setRequestMethod("POST");
// 设置是否向httpUrlConnection输出,因为这个是post请求,参数要放在 http正文内,因此需要设为true, 默认情况下是false;
conn.setDoOutput(true);
//设定传送的内容类型是可序列化的java对象 (如果不设此项,在传送序列化对象时,当WEB服务默认的不是这种类型时可能抛java.io.EOFException)
conn.setRequestProperty("Content-type", "application/x-java-serialized-object");
//配置必须要在connect之前完成,
conn.connect();
//生成传输对象
ObjectOutputStream oStream = new ObjectOutputStream(conn.getOutputStream());
Data data = new Data();
data.setText1(string1);
data.setText2(string2);
//写入
oStream.writeObject(data);
//此操作将写入所有已缓冲的输出字节,并将它们刷新到底层流中。
oStream.flush();
//这据话很重要,正在提交数据到服务器中区
InputStream inputStream = conn.getInputStream();
//获得服务器的数据
ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);
Data data2 = (Data) objectInputStream.readObject();
//显示
System.out.println("res data text1="+data2.getText1()+",text2="+data2.getText2());
在服务器的代码:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
// 服务器返回数据
System.out.println("?1");
InputStream inputStream = request.getInputStream();
ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);
com.data.Data data;
try
{
data = (com.data.Data) objectInputStream.readObject();
System.out.println("Data : text1="+data.getText1() + ",text2="+data.getText2());
//写入对象到客户端
ObjectOutputStream objectOutputStream = new ObjectOutputStream( response.getOutputStream());
data.setText1("ljz");
data.setText2("king");
objectOutputStream.writeObject( data );
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
System.out.println("?2");
}
}
好的,这样就完成的android和服务器通过POST方式,传递object对象了。。。