querystring-在httpclient中使用Serializable接口报错

问题描述

在httpclient中使用Serializable接口报错
public static void main(String[] args) throws IOException ClassNotFoundException
{
String url = ""http://localhost:8080/RmiJetty/test"";

    Scanner sc1 = new Scanner(System.in);    String queryString1 = ""num1 = 1"";    String queryString2 = ""num2 = 1"";    String inputObj = sc1.next();    Serializable s = getObjFromServer(url queryString1queryString2 inputObj);    System.out.println(s.toString());}/** * @param url * @param queryString 类似a=b&c=d 形式的参数 *  * @param inputObj   发送到服务器的对象。 *      * @return 服务器返回到客户端的对象。 * @throws IOException */public static Serializable getObjFromServer(String url String queryString1String queryString2Serializable inputObj) throws IOException{    HttpClient client = new HttpClient();    PostMethod post = new PostMethod(url);    post.setQueryString(queryString1);    post.setQueryString(queryString2);    post.setRequestHeader(""Content-Type""application/octet-stream"");    java.io.ByteArrayOutputStream bOut = new java.io.ByteArrayOutputStream(1024);    java.io.ByteArrayInputStream bInput = null;    java.io.ObjectOutputStream out = null;    Serializable returnObj = null;    try    {        out = new java.io.ObjectOutputStream(bOut);        out.writeObject(inputObj);        out.flush();        out.close();        out = null;        bInput = new java.io.ByteArrayInputStream(bOut.toByteArray());        RequestEntity re = new InputStreamRequestEntity(bInput);        post.setRequestEntity(re);        client.executeMethod(post);        java.io.InputStream in = post.getResponseBodyAsStream();        java.io.ObjectInputStream oInput = new java.io.ObjectInputStream(in);        returnObj = (Serializable) oInput.readObject();        oInput.close();        oInput = null;    }    catch (IOException e)    {        // TODO Auto-generated catch block        e.printStackTrace();    }    catch (ClassNotFoundException e)    {        // TODO Auto-generated catch block        e.printStackTrace();    }    finally    {        if (out != null)        {            out.close();            out = null;        }        if (bInput != null)        {            bInput.close();            bInput = null;        }        //释放连接        post.releaseConnection();    }    return returnObj;}

下面是servlet:
public class servlet1 extends HttpServlet{

 protected void doGet(HttpServletRequest request HttpServletResponse response)   throws ServletException IOException {     String strnum1 = request.getParameter(""num1"");     String strnum2 = request.getParameter(""num2"");     //String strnum3 = request.getParameter(""inputObj"");     java.io.ObjectInputStream oi = null;     java.io.ObjectOutputStream ot = null;     String url=""rmi://127.0.0.1/Hello"";      //hello表示为一个token,类似秘钥    try {      NumServer  server = (NumServer)Naming.lookup(url);      oi = new java.io.ObjectInputStream(request.getInputStream());      Object o = oi.readObject();      oi.close();      oi = null;      //int result = Integer.parseInt(strnum1) + Integer.parseInt(o.toString());      int a = Integer.parseInt(strnum1);      int b = Integer.parseInt(strnum2);      int result = server.num(abo.toString());      ot = new java.io.ObjectOutputStream(response.getOutputStream());      ot.writeObject(result);      ot.flush();      ot.close();      ot = null;      PrintWriter pw = response.getWriter();      pw.println(result);    }catch (IOException e)    {        // TODO Auto-generated catch block        e.printStackTrace();    }    catch (ClassNotFoundException e)    {        // TODO Auto-generated catch block        e.printStackTrace();    } catch (NotBoundException e) {        // TODO Auto-generated catch block        e.printStackTrace();    }    finally    {        try        {            if (oi != null)            {                oi.close();                oi = null;            }            if (ot != null)            {                ot.close();                ot = null;            }        }        catch (IOException e)        {            // TODO Auto-generated catch block            e.printStackTrace();        } 

}

}
}
这是报的错:
java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2281)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2750)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:780)
at java.io.ObjectInputStream.(ObjectInputStream.java:280)
at RmiClient.HttpClientTest1.getObjFromServer(HttpClientTest1.java:79)
at RmiClient.HttpClientTest1.main(HttpClientTest1.java:31)
Exception in thread ""main"" java.lang.NullPointerException
at RmiClient.HttpClientTest1.main(HttpClientTest1.java:33)
求大神帮忙啊

解决方案

main函数里有空值。你看看这几行代码有没有空值。
String inputObj = sc1.next();

Serializable s = getObjFromServer(url queryString1queryString2 inputObj);System.out.println(s.toString());
时间: 2024-08-03 20:17:38

querystring-在httpclient中使用Serializable接口报错的相关文章

java中实现Serializable接口的类有什么特点?

问题描述 java中实现Serializable接口的类有什么特点? java中实现Serializable接口的类有什么特点,还看到这个实现该接口的类里面一个常量,private static final long serialVersionUID = 1L;如何理解这个常量呢 解决方案 Serializable是一个标识接口,没有需要实现的方法,凡是实现该接口的类都可以进行序列化和反序列化操作. 实现serializable接口的作用是就是可以把对象存到字节流,然后可以恢复.所以你想如果你的

spring +springmvc+mybatis,service中调用dao接口报空

问题描述 spring +springmvc+mybatis,service中调用dao接口报空 搭建ssm,启动项目没问题,但是在service实现类中调用dao接口时,对象loginDao对象是空的,错误信息如下 log4j:ERROR Error occured while converting date. java.lang.NullPointerException at java.lang.System.arraycopy(Native Method) at java.lang.Abs

jar-weblogic环境下调用接口报错,急,在线等!org.w3c.dom.Node.setUserData

问题描述 weblogic环境下调用接口报错,急,在线等!org.w3c.dom.Node.setUserData 之前在测试环境中测试是可以的,后来部署到正式环境就挂掉了,tomcat下也是正常的.项目的weblogic.xml也配置了优先加载项目的jar包,还是不行. ava.lang.LinkageError: loader constraint violation: when resolving interface method "org.w3c.dom.Node.setUserData

Windows 8应用商店中安装软件出现报错:0x80070585

  故障现象: Windows 8应用商店中安装软件出现报错:0x80070585 解决方案: 1. 重新启动电脑; 2. 按ctrl+alt+delete组合键调出任务管理器; 3. 停止WMPNetworkSvc服务; 4. 重新安装刚才无法运行的软件.

jboss-JBOSS4 在运行过程中突然不停地报错DLQ not bound是什么原因?

问题描述 JBOSS4 在运行过程中突然不停地报错DLQ not bound是什么原因? JBOSS4 在运行过程中突然不停地循环报错DLQ not bound,但是运行系统连接JBOSS还是正常的,而且业务也能正常执行,请问这个是什么原因导致的呢?怎么预防和停止报错?

java-myeclipse中Java导出项目报错

问题描述 myeclipse中Java导出项目报错 解决方案 出现这个问题是因为编译的时候编码跟文件存储的编码方式不一样造成的,你可以参考下这篇blog,希望对你有帮助. 解决方案二: 那你看下这个问题和答案,也许可能有你需要的 解决方案三: 刚刚那个忘插入链接了

.net-.NET调JAVA的webservice接口报错是怎么回事?

问题描述 .NET调JAVA的webservice接口报错是怎么回事? webservice可访问,已访问到接口方法,参数和返回值都是string类型的.就是最后执行该方法时报错"Fault occurred while processing". 无论静态添加web引用或服务引用,还是代码动态添加,都是一样的错.动态调用是在最后invoke时报错.是怎么回事?怎么改?求大神帮忙~~

android-在安卓studio中运行项目总是报错,有人知道怎么解决吗?

问题描述 在安卓studio中运行项目总是报错,有人知道怎么解决吗? Error:A problem occurred configuring project ':app'. Could not resolve all dependencies for configuration ':app:_debugCompile'. Could not find any version that matches com.android.support:appcompat-v7:23.+. Searched

tring format报错-在myEclipse9.0中运行String.format报错

问题描述 在myEclipse9.0中运行String.format报错 错误信息:The method format(String, Object[]) in the type String is not applicable for the arguments (String, String) 源代码: public void test1(){ String str=null; str=String.format("Hi, %s", "林计钦"); // 格式化