我一直在尝试通过Java从这个链接下载以下XML文件:
但问题是,当我使用java代码(内置或外置)下载文件时,我得到的是JSON文件而不是XML文件,尽管我通常可以将它作为XML从Chrome下载。
我正在使用的代码:
URL url= new URL("https://api.eancdn.com/ean-services/rs/hotel/v3/list?cid=55505&minorRev=99&apiKey=bj6f8z64bnmn35hczeasbuut&locale=en_US¤cyCode=USD&xml=%3CHotelListRequest%3E%0A%20%20%20%20%3Ccity%3ESeattle%3C%2Fcity%3E%0A%20%20%20%20%3CstateProvinceCode%3EWA%3C%2FstateProvinceCode%3E%0A%20%20%20%20%3CcountryCode%3EUS%3C%2FcountryCode%3E%0A%20%20%20%20%3CarrivalDate%3E11%2F22%2F2014%3C%2FarrivalDate%3E%0A%20%20%20%20%3CdepartureDate%3E11%2F24%2F2014%3C%2FdepartureDate%3E%0A%20%20%20%20%3CRoomGroup%3E%0A%20%20%20%20%20%20%20%20%3CRoom%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CnumberOfAdults%3E2%3C%2FnumberOfAdults%3E%0A%20%20%20%20%20%20%20%20%3C%2FRoom%3E%0A%20%20%20%20%3C%2FRoomGroup%3E%0A%20%20%20%20%3CnumberOfResults%3E25%3C%2FnumberOfResults%3E%0A%3C%2FHotelListRequest%3E") ;
File sa= new File("C:\\Users\\Ramcos\\Desktop\\akaletc.xml");
org.apache.commons.io.FileUtils.copyURLToFile(url, sa);
答案 0 :(得分:2)
您需要将“accept”http标头设置为“application / xml”。可能是服务器将其默认为json,但是您的浏览器将其默认为xml。
答案 1 :(得分:0)
在android中我们使用类似的东西:
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(method);
/* headers */
httppost.setHeader("Accept", "application/xml");
httppost.setHeader("Content-Type", "application/xml");
答案 2 :(得分:0)
服务器定制其对Accept
HTTP标头中的内容的响应。如果您没有说您的客户端接受XML,则服务器将回退到JSOIN
如果将Accept标头设置为application/xml
,则服务器将返回XML。例如,如果你正在使用cURL:
curl -s -H 'Accept: application/xml' <URL>
答案 3 :(得分:0)
您可以使用URLConnection
对象中可以获得的URL
对象。然后,您可以使用setRequestProperty(String, String)
方法设置标头。看起来应该是这样的。
URL url = new URL("that url");
URLConnection connection = url.openConnection();
connection.setRequestProperty("accept", "application/json");
connection.connect();
File sa = new File("C:\\Users\\Ramcos\\Desktop\\akaletc.xml");
org.apache.commons.io.IOUtils.copy(connection.getInputStream(), new FileOutputStream(sa));