HTTP500内部服务器错误

  • 1.问题描述
  • 2.问题解决
  • 3.HTTP请求代码

1.问题描述

1.使用http方式请求对方服务器,返回JSON格式数据
2.由于是测试环境,网段不是同一个,对方服务器网段做了代理,我们能ping通,也能telnet
3.使用浏览器访问能正常返回JSON格式数据
4.用代码解析http请求一直报500错误,对方觉得是我们代码问题,但是我们用代码解析公网上的一些请求是正常的;而且我们将代码发给对方,让对方解析,也是正常的

2.问题解决

由于我们本地看不出什么问题,我们用代码请求,让对方服务器进行抓包调试。
1.对方服务器让我们将请求的Content-Type改为application/json,请求仍然有问题
Error-Reason:CHARACTER:error="json"; error_description*=UTF-8''Expected one of: <<{,[>> but got: <>
2.对方查了下,发现服务器Content-Type填什么都报错,application/x-www-form-urlencoded、application/json都报错,只有不填才能正确,空串也不行;我们就说http请求头有个默认值就是x-www-form-urlencoded,对方服务器端改了这个Content-Type的请求头,我们代码就能正常访问到JSON数据了

3.HTTP请求代码

public static String sendGet(String url, String param) {  
       String result = "";
       BufferedReader in = null;
       try {
           String urlName = url + "?" + param;
           URL realUrl = new URL(urlName);
           // 打开和URL之间的连接
           URLConnection conn = realUrl.openConnection();
           // 设置通用的请求属性
           conn.setRequestProperty("accept", "*/*");
           conn.setRequestProperty("connection", "Keep-Alive");
           conn.setRequestProperty("user-agent",
                   "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
           // 建立实际的连接
           conn.connect();
           // 获取所有响应头字段
           Map<String, List<String>> map = conn.getHeaderFields();
           // 遍历所有的响应头字段
           for (String key : map.keySet()) {
               System.out.println(key + "--->" + map.get(key));
           }
           // 定义BufferedReader输入流来读取URL的响应
           in = new BufferedReader(
                   new InputStreamReader(conn.getInputStream(),"UTF-8"));
           String line;
           while ((line = in.readLine()) != null) {
               result += line;
           }
       } catch (Exception e) {
           System.out.println("发送GET请求出现异常!" + e);
           e.printStackTrace();
       }
       // 使用finally块来关闭输入流
       finally {
           try {
               if (in != null) {
                   in.close();
               }
           } catch (IOException ex) {
               ex.printStackTrace();
           }
       }
       return result;
   }

你可能感兴趣的:(Http)