java.io.IOException: Server returned HTTP response code: 500 for URL: http://localhost:8081/test/myServlet

java.io.IOException: Server returned HTTP response code: 403 for URL: http://localhost:8081/test/myServlet

但是自己却可以用浏览器访问,发现可能是服务器对我们这种java程序屏蔽了。

因为服务器的安全设置不接受Java程序作为客户端访问,解决方案是设置客户端的User Agent

url = new URL("http://localhost:8081/test/myServlet");
            HttpURLConnection connection = (HttpURLConnection) url.
                openConnection();
            connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");

这样就可以访问了。

Exception in thread "main" com.caucho.hessian.client.HessianConnectionException: 500: java.io.IOException: Server returned HTTP response code: 500 for URL: http://localhost:8081/test/myServlet

这是你引用的jar包引起的,如果你使用上面的例子,而使用hessian-3.1.5.jar或更高版本的包就会出现上述错误。更换hessian-3.0.20.jar以下的包就可以了。 
至于具体的原因我也没有调查过。

运行客户端程序,抛出异常:

Exception in thread "main" com.caucho.hessian.client.HessianConnectionException: 500: java.io.IOException: Server returned HTTP response code: 500 for URL: http://localhost:8081/test/myServlet

at com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:202)
at $Proxy0.getPerson(Unknown Source)
at example.BasicClient.main(BasicClient.java:25)

查看服务器日志,得到异常信息:
java.lang.IllegalStateException: Serialized class example.Person must implement java.io.Serializable
at com.caucho.hessian.io.SerializerFactory.getDefaultSerializer(SerializerFactory.java:262)
at com.caucho.hessian.io.SerializerFactory.getSerializer(SerializerFactory.java:234)
at com.caucho.hessian.io.Hessian2Output.writeObject(Hessian2Output.java:406)
...

异常提示 example.Person 必须实现 java.io.Serializable 接口。

(2)Serializable 和序列化
对于简单数据类型,如int, double, char,数组等,以及常用的一些类型,如String,java.util.Date,List, Map等,Hessian 本身对其进行了特殊处理,也就是 Hessian 对其进行了序列化操作,但是 Hessian 不可能了解其他的类以及在您的应用程序中使用的那些类。对于这些类,Hessian 则要求这些类本身能够被序列化,也就是要求这些必须实现 Serializable 接口。

(3)正确的做法
让 Person 实现 Serializable 接口,则 Person.java 应该被修改成:
package example;

import java.io.Serializable;
import java.util.Date;

public class Person implements Serializable{
private int id = 0;
private String name = "";
private Date birthday = null;
...

重新启动 Web 服务器,就可以成功运行客户端程序了。

1,org.springframework.remoting.RemoteAccessException: Cannot access Hessian service at [http://61.152.162.173/remote/remoteService]; 
出现这个异常一般是因为服务端操作出现异常引起的

2,com.caucho.hessian.io.HessianProtocolException: 501: java.io.IOException: Server returned HTTP response code: 501 for URL:

出现这个原因,可能是因为代理问题(我的机器是通过squid代理上网的,并不是通过路由器),501服务器无法提供对请求中所要求功能的支持。如果服务器无法识别请求方法就会回应此状态代码,这意味着不能回应请求所要求的任何资源。

3,org.springframework.remoting.RemoteConnectFailureException: Cannot connect to Hessian service at http://localhost:8081/test/myServlet]; nested exception is java.net.ConnectException: Connection refused: connect
连接不上hessian服务器.

4,客户端抛出的异常:
Exception in thread "main" java.io.IOException: Server returned HTTP response code: 500 for URL: http://localhost:8081/test/myServlet

at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1174)
服务端抛出的异常如下:
[org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/].[FileServlet]] - Servlet.service() for servlet FileServlet threw exception
com.caucho.hessian.io.HessianProtocolException: upload: expected end of call ('z') at ' 
解决:因为我的服务端要求上传的文件必须在userfiles目录下(代码:filePath.indexOf("userfiles");),判断我之前测试的文件没有放到该目录下,就出现了这种错误.

5,为什么客户端是对象,到了服务端就是map了呢?????
原因:我的list在上传前保存的是对象,经测试也不是map型,但到服务端从list获取的变成了map型,经分析是因为目录结构的原因,我的客户端po放到了domain目录下,服务端po放到domainobject下,我是用netCourseInfo组装信息的,客户端和服务端这两个文件不同(因为import的po的位置不一样),所以造成服务端反序列化时出现问题.

使用main方法调用http请求本地服务器的某个servlet报错问题的更多相关文章

  1. mysql连接不上本地服务器或者localhost:3306报错

    今天初学MySQL数据库就遇到问题: 主要是本地服务器登录问题 workbench里双击那个connection出现的 解决方法: 1:看一看防火墙,这是最常见的,这种主要是防火墙限制了访问,可能是安 ...

  2. [Inside HotSpot] hotspot的启动流程与main方法调用

    hotspot的启动流程与main方法调用 虚拟机的使命就是执行public static void main(String[])方法,从虚拟机创建到main方法执行会经过一系列流程.这篇文章详细讨论 ...

  3. 【PostgreSQL】PostgreSQL添加新服务器连接时,报错“Server doesn't listen ”,已解决。

    PostgreSQL添加新的服务器连接时,报错:

  4. 谁说java里面有返回值的方法必须要有返回值,不然会报错????

    慢慢的总是发现以前的学得时候有些老师讲的不对的地方! 所以还是尽量别把一些东西说的那么绝对,不然总是很容易误导别人,特别是一些你自己根本就没有试过的东西,然后又斩钉截铁的告诉别人,这样不行,肯定不行什 ...

  5. 通过本地yum源安装软件报错[Errno 14] PYCURL ERROR 56 - "Failure when receiving data from the peer"

    通过本地yum源安装软件报错 http://192.168.3.85/centos/6/os/x86_64/Packages/php-pdo-5.3.3-47.el6.x86_64.rpm: [Err ...

  6. 【前台 ajax】前台ajax请求,地址正确,但是报错不进入后台

    前台ajax请求,地址正确,但是报错不进入后台 出现上述问题,可能的情况是 1.ajax用的post,而后台限定用get,或者所有的post请求都被拦截,所以不能正常进入并且报错403 @Reques ...

  7. 同一台服务器请求easyswoole的一个websocket接口报错

    求助大神啊!file_get_contents报这个错:failed to open stream: Connection timed out换成curl又报这个错:couldn't connect ...

  8. IIS 发布 之 Word导出本地测试正常,发布报错

    用C#动态生成Word文档功能实现了,在本地的机器运行时是好的,但程序发布 IIS 或 远程服务器 上就报错, 报错信息为:检索 COM 类工厂中 CLSID 为 {000209FF-0000-000 ...

  9. 服务器卡死,重启报错: INFO: task blocked for more than 120 seconds

    问题:服务器负载很高,但是CPU利用率不高.服务器经常夯住,网站打不开,SSH连接非常不稳定,输入命令夯住. 重启服务器报错: INFO: task blocked for more than 120 ...

随机推荐

  1. acm算法模板(5)

    STL 中 sort 函数用法简介 做 ACM 题的时候,排序是一种经常要用到的操作.如果每次都自己写个冒泡之类的 O(n^2) 排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错. ST ...

  2. CCF真题之门禁系统

    201412-1 问题描述 涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况.每位读者有一个编号,每条记录用读者的编号来表示.给出读者的来访记录,请问每一条记录中的读者是第几次出现. 输入 ...

  3. java读properties的通用类,兼容linux和windows

    package util; import java.io.IOException; import java.io.InputStream; import java.util.Properties; / ...

  4. Android中实现两次点击返回键退出本程序

    1,当用户使用我们的app的时候,有时候无意的或者不是有心的按下了我们的返回键,这时候为了更好的用体验,我们需要让用户再一次确定一下,以便判断用户的真实意图 代码如下: //该功能实现退出时提示的功能 ...

  5. zw版【转发·台湾nvp系列Delphi例程】HALCON TileChannels

    zw版[转发·台湾nvp系列Delphi例程]HALCON TileChannels unit Unit1;interfaceuses Windows, Messages, SysUtils, Var ...

  6. 怎么开启PHP 的错误提示?

    怎么开启PHP 的错误提示?   在php.ini 修改error_reporting = E_ALL & ~E_NOTICEdisplay_errors = On重启apache服务器在运行 ...

  7. 七、Java基础---------JDK安装与配置

    配置环境变量名词说明 path:通过path系统去寻找可执行的java文件. JAVA_HOME:JDK的安装目录 classpath:加载目录 为什么需要配置path,什么时候需要classpath ...

  8. 【DP】斜率优化

    斜率优化 入门题:PKU3709 很多人貌似都是做这道题来K斜率优化的,所以看了资料以后还是开始入手吧. 然而还是得跪求大神的程序啊 ORZ ORZ…… 其实理解斜率优化就是会列斜率不等式,还要理解剔 ...

  9. string与char之间的互相转换

    string对象是一种很强大的存在哈~~ 1. string转const char* string s = "abc"; const char* c_s = s.c_str(); ...

  10. web负载均衡

    在有些时候进行扩展是显而易见的,比如下载服务由于带宽不足而必须进行的扩展,但是,另一些时候,很多人一看到站点性能不尽如人意,就马上实施负载均衡等扩展手段,真的需要这样做吗?当然这个问题也只有他们自己能 ...