本文共 1487 字,大约阅读时间需要 4 分钟。
在做设备软件的时候,需要调用我司服务器的数据,就是用远程接口调用。 这里没有直接用socket,网上的一些案例只是简单地额实现。在实际开发中,经常是url路径的整体调用。此时对于那些有参数的传递的url,在ie上可以调用远程接口,但是在程序中 就返回505错误,即不支持此协议。开始以为是程序问题,还换了HttpClient类进行调用,还是会出现505问题。最后发现是url路径空格问题,url中传递了一个时间,年月日与时分秒之间有空格,就错在这里,http1.1协议不支持。必须将空格换位%20,才行。换了后就可以了。在网上查询了,还有一种说法是url路径过长。最后发现不是这个问题。 现在写上完成远程接口调用代码: // 向远程调用接口 public static String connect(String httpUrl) { String result=""; try { URL url = new URL(httpUrl.toString()); StringBuffer document = new StringBuffer(); HttpURLConnection httpconn = (HttpURLConnection) url.openConnection(); httpconn.setRequestProperty("accept", "*/*"); httpconn.setRequestProperty("connection", "Keep-Alive"); httpconn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"); //建立实际的连接 httpconn.connect(); //获取所有响应头字段 Map< String,List< String>> map = httpconn.getHeaderFields(); //遍历所有的响应头字段 for (String key : map.keySet()){ System.out.println(key + "--->" + map.get(key)); } InputStream input = null; try{ httpconn.connect(); System.out.println(httpconn.getResponseCode()); input = httpconn.getInputStream(); }catch(Exception e){ e.printStackTrace(); } System.out.println(input); BufferedReader reader = new BufferedReader(new InputStreamReader(input)); String Result = ""; while ((Result = reader.readLine()) != null) { document.append(Result); } result = document.toString(); System.out.println(result); } catch (Exception e) { e.printStackTrace(); } return result; } 注意:1 这里传递的是整个url 2 程序中还打印出实现远程接口调用的需要的协议。
转载地址:http://oftnx.baihongyu.com/