当前位置: 首页 > 面试题库 >

XML文件的HTTP请求

司空锋
2023-03-14
问题内容

我正在尝试对Android上的程序使用Flurry Analytics,但无法从服务器获取xml文件本身。

我正在接近,因为在Log Cat System.out标记中由于某种原因我可以得到一半,它说“ XML传递异常=
java.net.MalformedURLException:找不到协议:?xml版本= 1.0编码=“ UTF
-8“等…直到大约完成我的xml代码的一半。不确定我做错了什么,我发送的HTTP get与标头请求接受应用程序/
xml,并且它无法正常工作。任何帮助感激不尽!

try {

                //HttpResponse response = client.execute(post);
                //HttpEntity r_entity = response.getEntity();
                //String xmlString = EntityUtils.toString(r_entity);

        HttpClient client = new DefaultHttpClient();  
        String URL = "http://api.flurry.com/eventMetrics/Event?apiAccessCode=????&apiKey=??????&startDate=2011-2-28&endDate=2011-3-1&eventName=Tip%20Calculated";
        HttpGet get = new HttpGet(URL);
        get.addHeader("Accept", "application/xml");
        get.addHeader("Content-Type", "application/xml");
        HttpResponse responsePost = client.execute(get);  
        HttpEntity resEntity = responsePost.getEntity(); 
        if (resEntity != null)

        {  
                    System.out.println("Not null!");

                    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

                    DocumentBuilder db = dbf.newDocumentBuilder();

                    String responseXml = EntityUtils.toString(responsePost.getEntity());
                    Document doc = db.parse(responseXml);
                    doc.getDocumentElement().normalize();

                    NodeList nodeList = doc.getElementsByTagName("eventMetrics");


                    for (int i = 0; i < nodeList.getLength(); i++)
                    {
                        Node node = nodeList.item(i);

                        Element fstElmnt = (Element) node;

                        NodeList nameList = fstElmnt.getElementsByTagName("day");

                        Element dayElement = (Element) nameList.item(0);

                        nameList = dayElement.getChildNodes();

                        countString = dayElement.getAttribute("totalCount");
                        System.out.println(countString);
                        count = Integer.parseInt(countString);
                        System.out.println(count);
                        count += count;

                    }
        }

    } catch (Exception e) {

                    System.out.println("XML Passing Exception = " + e);

                }

问题答案:

采用字符串的parse方法用于URL格式。您需要在解析字符串之前将其包装在StringReader中。如果可以将XML作为InputStream并进行解析,则更好,例如:

String uri =
    "http://api.flurry.com/eventMetrics/Event?apiAccessCode=?????&apiKey=??????&startDate=2011-2-28&endDate=2011-3-1&eventName=Tip%20Calculated";

URL url = new URL(uri);
HttpURLConnection connection =
    (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", "application/xml");

InputStream xml = connection.getInputStream();

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(xml);


 类似资料:
  • 问题内容: 如何在HTTP发布请求的消息正文中附加XML文件? 有人可以举这样的例子吗 问题答案: 这是用于在所需URL上发出HTTP POST请求的示例代码片段:

  • 在JMeter中,有没有可能从一个目录加载XML文件,并在HTTP请求的正文中使用?我有几千个XML文件需要用于负载测试,数据没有CSV格式,因为XML是由另一个系统生成的。 那么,在JMeter中有没有插件可用,它取一个XML文件的目录,以XML文件的内容为主体发出HTTP请求。正在寻找一个在与多个用户(线程)一起使用时也能工作的解决方案。 j

  • 我正试图通过JMeter发送HTTP请求。我创建了一个循环计数为25的线程组。我有一个120的加速期,线程数设置为30。在线程组中,我有20个HTTP请求。对于JMeter如何运行这些请求,我有点困惑。一个线程组内的20个请求是否都在一个线程中运行,而线程组上的每个循环是否在不同的线程上并发运行?或者,20个请求中的每一个都在可用时在不同的线程中运行。 我的另一个问题是,在每个循环中,我想改变通过

  • JMeter HTTP请求-404错误 当我运行jmx文件时,其中一个HTTP请求文件会抛出404错误。屏幕截图如上图所示。 有人能为这个问题提出一些解决方案吗?

  • 这就是我获取XML响应的方式: 希望有人能帮我。我认为URLConnection或其中一个流需要设置为UTF-8,考虑到谷歌的响应也是用UTF-8编码的?!

  • 问题内容: 由于jQuery中的Ajax请求,存在未定义的错误。但是它在本地工作。jquery1.3.2.js @ 3633行中的错误引用 我的代码是: 代码中的警报向我显示(0,“未定义”); 我做错了什么? 问题答案: 如果您的ajax请求在完成之前被取消,则可能会发生这种情况。当用户通过刷新,单击链接或更改浏览器中的URL离开页面时,jQuery引发错误事件。通过为ajax调用实现错误处理程