Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Java下载XML文件给了我一个JSON文件_Java_Xml_Json - Fatal编程技术网

通过Java下载XML文件给了我一个JSON文件

通过Java下载XML文件给了我一个JSON文件,java,xml,json,Java,Xml,Json,我一直在尝试通过Java从该链接下载以下XML文件: 但问题是,当我使用内置或外部java代码下载文件时,我得到的是一个JSON文件而不是XML文件,尽管我通常可以从Chrome以XML形式下载它 我使用的代码: URL url= new URL("https://api.eancdn.com/ean-services/rs/hotel/v3/list?cid=55505&minorRev=99&apiKey=bj6f8z64bnmn35hczeasbuut&locale

我一直在尝试通过Java从该链接下载以下XML文件:

但问题是,当我使用内置或外部java代码下载文件时,我得到的是一个JSON文件而不是XML文件,尽管我通常可以从Chrome以XML形式下载它

我使用的代码:

URL url= new URL("https://api.eancdn.com/ean-services/rs/hotel/v3/list?cid=55505&minorRev=99&apiKey=bj6f8z64bnmn35hczeasbuut&locale=en_US&currencyCode=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); 

您需要将accept http头设置为application/xml。可能服务器默认为json,但您的浏览器默认为xml。

在android中,我们使用如下内容:

DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(method);

/* headers */
httppost.setHeader("Accept", "application/xml");
httppost.setHeader("Content-Type", "application/xml");

服务器根据Accept HTTP头中的内容调整其响应。如果您不说您的客户机接受XML,那么服务器会退回到JSOIN

如果将Accept头设置为application/xml,服务器将返回xml。例如,如果使用cURL:

curl -s -H 'Accept: application/xml' <URL>
您可以使用从URL对象获得的URLConnection对象。然后,您可以使用setRequestPropertyString、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));

您尝试过的一些实际示例Java代码可能会帮助其他人。我不确定该特定api是否正确,但当我在帖子中看到api键时,我总是会畏缩,可能是编辑?File sa=new FileC:\\Users\\Ramcos\\Desktop\\akalec.xml;org.apache.commons.io.FileUtils.copyURLToFileurl,sa;确认后,Accept和Content-Type以及application/json都会给我一个json响应。您发送了一个http请求来获取http响应及其内容吗?您需要修改您的http请求并将accept标头添加到其中。它不适用于我,是否有人可以将其写下来?@Rs123编辑您的帖子,并向我们显示您用于发送请求的代码。然后有人可以告诉你如何设置请求的标题。@Rs123没问题,我发布了一个答案来帮助你处理代码,但这个答案应该是这个问题的公认答案。