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

从Java调用Restful Service

葛子昂
2023-03-14
问题内容

在这里,我并不是在创建RESTful服务,实际上我必须从Java代码中调用外部Restful服务。目前,我正在使用Apache
HttpClient实现此功能。我从Web服务获得的响应是​​XML格式。我需要从XML提取数据并将其放在Java对象上。听说不是使用SAX解析器,而是可以使用JAX-
RS和JERSEY来自动将xml标记映射到相应的Java对象。

我一直在浏览,但是找不到开始使用的资源。我确实查看了现有链接 使用Java中的Java RESTful调用消耗RESTful API

感谢您提供任何帮助。

谢谢!!


问题答案:

更新

跟进此:我可以这样吗?如果xml返回为4
......如果我正在构造一个Person对象,我相信这会阻塞。我可以只绑定我想要的xml元素吗?如果是,我该怎么做。

您可以按以下方式映射此XML:

input.xml

<?xml version="1.0" encoding="UTF-8"?>
<Persons>
    <NumberOfPersons>2</NumberOfPersons>
        <Person>
            <Name>Jane</Name>
            <Age>40</Age>
        </Person>
        <Person>
            <Name>John</Name>
            <Age>50</Age>
        </Person>
</Persons>

Persons

package forum7177628;

import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name="Persons")
@XmlAccessorType(XmlAccessType.FIELD)
public class Persons {

    @XmlElement(name="Person")
    private List<Person> people;

}

Person

package forum7177628;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;

@XmlAccessorType(XmlAccessType.FIELD)
public class Person {

    @XmlElement(name="Name")
    private String name;

    @XmlElement(name="Age")
    private int age;

}

演示版

package forum7177628;

import java.io.File;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(Persons.class);

        Unmarshaller unmarshaller = jc.createUnmarshaller();
        Persons persons = (Persons) unmarshaller.unmarshal(new File("src/forum7177628/input.xml"));

        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.marshal(persons, System.out);
    }

}

输出量

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Persons>
    <Person>
        <Name>Jane</Name>
        <Age>40</Age>
    </Person>
    <Person>
        <Name>John</Name>
        <Age>50</Age>
    </Person>
</Persons>

原始答案

以下是使用包括JAXB的Java SE API调用RESTful服务的示例:

String uri =
    "http://localhost:8080/CustomerService/rest/customers/1";
URL url = new URL(uri);
HttpURLConnection connection =
    (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", "application/xml");

JAXBContext jc = JAXBContext.newInstance(Customer.class);
InputStream xml = connection.getInputStream();
Customer customer =
    (Customer) jc.createUnmarshaller().unmarshal(xml);

connection.disconnect();

想要查询更多的信息:

  • http://blog.bdoughan.com/2010/08/creating-restful-web-service-part-55.html


 类似资料:
  • 问题内容: 我创建了一个xPages应用程序,该应用程序使用了位于服务器端javascript库中的许多服务器端javascript代码功能。 现在,我有一些Java代码位于java设计元素中,我想使用它们来调用javascript函数。 我确实知道从Java调用javascript是不合逻辑的,但是我想所有服务器端javascript都已编译为java,因此我认为可能可以获取所生成的已编译jav

  • 问题内容: 对于“从Java调用Clojure”而言,大多数Google热门歌曲都已过时,建议您使用它clojure.lang.RT来编译源代码。假设您已经从Clojure项目构建了一个jar并将其包含在类路径中,那么您能否帮助您清楚地说明如何从Java调用Clojure? 问题答案: 从Clojure 1.6.0开始,有一种新的首选方式来加载和调用Clojure函数。现在,此方法优于直接调用RT

  • 问题内容: 从python调用Java的最佳方法是什么?(对我来说,jython和RPC不是一个选择)。 我听说过JCC:http : //pypi.python.org/pypi/JCC/1.9 一个用于从C / Python调用Java的C 代码生成器,但这需要编译所有可能的调用。我希望有另一个解决方案。 我听说过JPype:http ://jpype.sourceforge.net/ 教程:

  • 我需要从Java中调用一些Python代码。 我知道Jython存在,或者Java有自己的Python解释器。 问题是,所说的Python代码使用一些本机(C)编译代码,甚至在GPU上运行一些东西。 所以我可以把它分为两个问题: < Li > Jython或Java的Python解释器支持这个吗?也就是说,Python代码(当从Java调用时)将与所有的C和GPU部分一起运行,因此运行速度将与它独

  • 我已经编写了一个.bat文件(因为我现在正在Windows上测试):- > 我将.bat文件保存在MongoDB的/bin文件夹中。 如果我直接从Windows命令提示符调用.bat文件,该文件可以正常工作。 以下是Java控制台的输出:

  • 问题内容: 任何人都可以帮我吗:我想从Pl / SQL,Oracle RDBMS调用一个Java程序,以下是设置 Windows 7计算机,Java安装在C:\ Program Files \ Java \ jdk1.7.0_02 我创建了一个目录来保存Java文件。D:\ Java,其中有一个hello.java文件。 可以很好地编译它,并在同一目录中生成.class文件。 由于我必须使用PL