java.io.IOException: Server returned HTTP response code: 500 for URL解决办法

来源:互联网 发布:137 138端口免流教程 编辑:程序博客网 时间:2024/05/15 18:16

今天遇到一个问题,写了一个客户端远程查询数据,结果报错了:

java.io.IOException: Server returned HTTP response code: 500 for URL: http://adserver.sinosns.cn/owner/owner_userAndOwner.action

客户端代码如下:

/** * 执行一个HTTP POST请求,返回请求响应的HTML *  * @param url请求的URL地址 * @param postData请求的查询参数 * @return 返回请求响应的HTML */public static String doHttpPost(String url, String postData) {String data = null;try {URL dataUrl = new URL(url);HttpURLConnection con = (HttpURLConnection) dataUrl.openConnection();//con.setRequestMethod("POST");//con.setRequestProperty("Proxy-Connection", "Keep-Alive");//con.setDoOutput(true);//con.setDoInput(true);con.setRequestMethod("POST");con.setRequestProperty("Proxy-Connection", "Keep-Alive");//con.setRequestProperty("ContentType","text/xml;charset=utf-8");con.setReadTimeout(50000);con.setDoOutput(true);con.setDoInput(true);con.setUseCaches(false);OutputStream os = con.getOutputStream();DataOutputStream dos = new DataOutputStream(os);dos.write(postData.getBytes("UTF-8"));dos.flush();dos.close();InputStream is = con.getInputStream();DataInputStream dis = new DataInputStream(is);byte d[] = new byte[dis.available()];dis.read(d);data = new String(d,"UTF-8");// System.out.println(data);con.disconnect();} catch (Exception ex) {ex.printStackTrace();}return data;}


服务器端代码:

CustomerModel customerModel = customerDao.getObjectByID(CustomerModel.class, Integer.valueOf(userid)); OwnerModel ownerModel = ownerDao.getObjectByID(OwnerModel.class, Integer.valueOf(ownerid));  if(null != customerModel){ object.put("userMac", customerModel.getMac()); object.put("userPhone",customerModel.getCustName()); }else { object.put("userMac", "0"); object.put("userPhone","0"); } if(null  != ownerModel){ if(null==ownerModel.getIndustryId()){ object.put("industry", "0"); } else { object.put("industry", ownerModel.getIndustryId().toString()); } object.put("province", ownerModel.getProvinceId().toString()); object.put("city", ownerModel.getCityId().toString()); object.put("area", ownerModel.getAreaId().toString()); } else { object.put("industry", "0"); object.put("province", "0"); object.put("city", "0"); object.put("area", "0"); }  return object.toString();


结果,因为传递的参数为空字符串,导致服务器端程序出现异常,没有数据返回客户端。所以在执行到

OutputStream os = con.getOutputStream();

这句代码的时候就报错了。

我的解决办法是在服务器端加上异常处理,并且在catch里面返回一个自定义的对象

这样就算发生异常,客户端也能去得到数据

0 0
原创粉丝点击