我服务器端代码:
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class DemoService extends HttpServlet{
private static final long serialVersionUID = 1589233260870765446L; protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doPost(req, resp);
} protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 从请求中获取客户端传入的流信息
ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(req.getInputStream()));
try {
// 获取客户端传来的信息对象
System.out.println((String)in.readObject());
in.close();
// 将信息返回给客户端
ObjectOutputStream out = new ObjectOutputStream(resp.getOutputStream());
out.flush();
// 将信息对象传给客户端
out.writeObject("给客户端返回的结果,就是我啦!");
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
客户端代码
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;public class DemoTestHttpURLConnection {
public static void main(String[] args) throws Exception {
// 传给对方参数,也可以是对象(此处的对象必须是可序列化的对象)
String sMessage = "客户端传入到服务区点数据了!" + DemoTestHttpURLConnection.class.getName();
// 服务器地址
URL url = new URL("http://127.0.0.1:8088/test");
// 打开地址
URLConnection con = url.openConnection();
//System.out.println(con.getContentType());
// 指示应用程序要从 URL 连接读取数据
con.setDoInput(true);
// 指示应用程序要将数据写入 URL 连接
con.setDoOutput(true);
// 设置一般请求属性 (不设置也没什么关系 :)
con.setRequestProperty("Content-Type", "text/html;charset=ISO-8859-1");
// 从Url连接中获取输出流 (即:将该流传给服务器)
OutputStream out = con.getOutputStream();
ObjectOutputStream objStream = new ObjectOutputStream(out);
// 将之前设置的好的对象传入给服务器
objStream.writeObject(sMessage);
objStream.flush();
objStream.close();
out.close();
// 从Url连接中获取输入流信息 (即:服务器的输出流信息)
InputStream in = con.getInputStream();
ObjectInputStream back = new ObjectInputStream(in);
// 得到服务器对象信息!
System.out.println((String)back.readObject());
back.close();
in.close();
}
}情况:
配置好服务器后执行测试代码,提示如下错误
Exception in thread "main" java.io.StreamCorruptedException: invalid stream header: 0D0A0D0A
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at DemoTestHttpURLConnection.main(DemoTestHttpURLConnection.java:47)
我的需求是想从服务器端获取一个字符串,就想到用java的URLConnection,但是没用过,大家帮看看是什么问题,先谢谢了
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class DemoService extends HttpServlet{
private static final long serialVersionUID = 1589233260870765446L; protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doPost(req, resp);
} protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 从请求中获取客户端传入的流信息
ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(req.getInputStream()));
try {
// 获取客户端传来的信息对象
System.out.println((String)in.readObject());
in.close();
// 将信息返回给客户端
ObjectOutputStream out = new ObjectOutputStream(resp.getOutputStream());
out.flush();
// 将信息对象传给客户端
out.writeObject("给客户端返回的结果,就是我啦!");
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
客户端代码
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;public class DemoTestHttpURLConnection {
public static void main(String[] args) throws Exception {
// 传给对方参数,也可以是对象(此处的对象必须是可序列化的对象)
String sMessage = "客户端传入到服务区点数据了!" + DemoTestHttpURLConnection.class.getName();
// 服务器地址
URL url = new URL("http://127.0.0.1:8088/test");
// 打开地址
URLConnection con = url.openConnection();
//System.out.println(con.getContentType());
// 指示应用程序要从 URL 连接读取数据
con.setDoInput(true);
// 指示应用程序要将数据写入 URL 连接
con.setDoOutput(true);
// 设置一般请求属性 (不设置也没什么关系 :)
con.setRequestProperty("Content-Type", "text/html;charset=ISO-8859-1");
// 从Url连接中获取输出流 (即:将该流传给服务器)
OutputStream out = con.getOutputStream();
ObjectOutputStream objStream = new ObjectOutputStream(out);
// 将之前设置的好的对象传入给服务器
objStream.writeObject(sMessage);
objStream.flush();
objStream.close();
out.close();
// 从Url连接中获取输入流信息 (即:服务器的输出流信息)
InputStream in = con.getInputStream();
ObjectInputStream back = new ObjectInputStream(in);
// 得到服务器对象信息!
System.out.println((String)back.readObject());
back.close();
in.close();
}
}情况:
配置好服务器后执行测试代码,提示如下错误
Exception in thread "main" java.io.StreamCorruptedException: invalid stream header: 0D0A0D0A
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at DemoTestHttpURLConnection.main(DemoTestHttpURLConnection.java:47)
我的需求是想从服务器端获取一个字符串,就想到用java的URLConnection,但是没用过,大家帮看看是什么问题,先谢谢了
解决方案 »
- 为什么调用了System.gc()后finalize()方法没有被调用呢?
- 为什么两个语句换了位置会出现:ArrayIndexOutOfBoundsException
- 问个unittest的问题,大家都来看看
- java中如何给空格的值强制赋值
- JTable中的一列是JComboBox,用TAB键移动到这一列时,如何让他变成JComboBox的样式?
- 一个小问题
- 这是什么意思?
- 请问大哥们!!!哪里有j2se的下载啊????
- 请问各位,jdk1.3安装好以后该怎么用,还有就是,我如果用editplus该如何直接进行JAVA编译,谢谢
- 操作blob到ORACLE,当数量大时,非常慢,请问如何解决呢
- 关于JAVA SOCKET的一个问题,整了一天半都没结果。请大家帮忙看看。
- java中label的事件怎么处理??
2 加入sys输出调试或者断点 测试输出。
会有帮助!