Jersey客户端

这篇博客介绍了如何基于上一篇关于cxf-rs-spring的服务端,利用Jersey构建函数式风格的客户端。内容包括实现GET、PUT、POST请求,以及发送和接收数据的方法。
摘要由CSDN通过智能技术生成

Jersey 很适合编写函数式风格的客户端,本篇博客是在上一篇博客的基础上来实现Jersey客户端。即需要上篇博客中cxf-rs-spring为客户端提供Web服务。

本篇博客实现了GET、PUT以及POST请求,同时实现了如何向服务端发送请求数据以及接受并读取来自服务端的数据。


一、使用maven创建java项目jersey_client



二、配置pom.xml 添加依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>demo.jersey</groupId>
  <artifactId>jersey_client</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>jersey_client</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    
    <!-- Jersey dependencies -->
    <dependency>
		<groupId>org.glassfish.jersey.core</groupId>
		<artifactId>jersey-client</artifactId> <version>2.22.2</version
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我可以为您提供一个简单的示例代码,以便您更好地理解如何使用Jersey框架编写航班信息查询网站客户端。以下是一些参考示例: 1. 创建Client实例 您可以在一个名为FlightClient.java的文件中创建Client实例: ```java import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; public class FlightClient { private Client client; public FlightClient() { client = ClientBuilder.newClient(); } public Client getClient() { return client; } public void close() { client.close(); } } ``` 2. 创建WebTarget 您可以在一个名为FlightResource.java的文件中创建WebTarget: ```java import javax.ws.rs.client.Client; import javax.ws.rs.client.WebTarget; public class FlightResource { private WebTarget target; public FlightResource(Client client, String url) { target = client.target(url); } public WebTarget getTarget() { return target; } } ``` 3. 利用target对象完成请求 您可以在另一个名为FlightService.java的文件中利用target对象完成请求: ```java import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.MediaType; public class FlightService { private WebTarget target; public FlightService(WebTarget target) { this.target = target; } public String getFlights(String departure, String destination) { return target.path("/flights") .queryParam("departure", departure) .queryParam("destination", destination) .request(MediaType.APPLICATION_JSON) .get(String.class); } } ``` 4. 接收response返回类型和关闭连接 您可以在主程序中使用FlightClient、FlightResource和FlightService类进行请求,并接收response返回类型和关闭连接。例如: ```java public static void main(String[] args) { FlightClient flightClient = new FlightClient(); FlightResource flightResource = new FlightResource(flightClient.getClient(), "http://localhost:8080/api"); FlightService flightService = new FlightService(flightResource.getTarget()); String flights = flightService.getFlights("Shanghai", "Beijing"); System.out.println(flights); flightClient.close(); } ``` 5. 使用Java Swing编写前端页面 使用Java Swing编写前端页面需要一定的Java Swing编程知识。您可以创建一个JFrame窗口,添加JPanel面板,将组件添加到面板中,然后在事件处理程序中处理用户的输入和响应服务器返回的数据。例如: ```java import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class FlightSearch extends JFrame { private JPanel mainPanel; private JLabel departureLabel; private JTextField departureField; private JLabel destinationLabel; private JTextField destinationField; private JButton searchButton; private JTextArea resultArea; private FlightClient flightClient; private FlightResource flightResource; private FlightService flightService; public FlightSearch() { flightClient = new FlightClient(); flightResource = new FlightResource(flightClient.getClient(), "http://localhost:8080/api"); flightService = new FlightService(flightResource.getTarget()); initUI(); initListeners(); } private void initUI() { mainPanel = new JPanel(); mainPanel.setLayout(new GridLayout(3, 2)); departureLabel = new JLabel("Departure:"); mainPanel.add(departureLabel); departureField = new JTextField(); mainPanel.add(departureField); destinationLabel = new JLabel("Destination:"); mainPanel.add(destinationLabel); destinationField = new JTextField(); mainPanel.add(destinationField); searchButton = new JButton("Search"); mainPanel.add(searchButton); resultArea = new JTextArea(); mainPanel.add(resultArea); getContentPane().add(mainPanel); setSize(400, 300); setTitle("Flight Search"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } private void initListeners() { searchButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String departure = departureField.getText(); String destination = destinationField.getText(); String flights = flightService.getFlights(departure, destination); resultArea.setText(flights); } }); } public static void main(String[] args) { new FlightSearch(); } } ``` 请注意,这只是一个简单的示例,您需要根据您的具体需求和技术栈进行修改和扩展。同时,安全性和性能等方面也需要考虑,例如输入验证和数据缓存等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值