我试图在弹簧应用中实现摆动,其中弹簧部分工作正常,但是在摆动应用中会出错。这是我正在尝试构建的应用程序(https://www.youtube.com/watch?reload=9&v=5O-FrvzlBnk)
我收到此错误“ java.lang.NoSuchMethodError:okhttp3.HttpUrl.get(Ljava / lang / String;)Lokhttp3 / HttpUrl;”在日食中]
这是ApiClient.java
import okhttp3.OkHttpClient; import okhttp3.logging.HttpLoggingInterceptor; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; public class APIclient { private static Retrofit retrofit =null; public static Retrofit getClient() { HttpLoggingInterceptor interceptor=new HttpLoggingInterceptor(); interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); OkHttpClient client=new OkHttpClient() .newBuilder().addInterceptor(interceptor).build(); System.out.println(client); retrofit=new Retrofit.Builder() .baseUrl("http://localhost:9596/api/product/findall") .addConverterFactory(GsonConverterFactory.create()) .client(client) .build(); return retrofit; } }
这是JframeMain.java
import java.awt.EventQueue; import java.util.List; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.table.DefaultTableModel; import api.APIclient; import api.ProductAPI; import entities.Product; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; import javax.swing.JScrollPane; import javax.swing.JTable; public class JFrameMain extends JFrame { private JPanel contentPane; private JTable tableProduct; public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { try { JFrameMain frame=new JFrameMain(); frame.setVisible(true); } catch(Exception e) { e.printStackTrace(); } } }); } public JFrameMain() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100,100,621,373); contentPane=new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JScrollPane scrollPane = new JScrollPane(); scrollPane.setBounds(40, 27, 492, 184); contentPane.add(scrollPane); tableProduct = new JTable(); scrollPane.setRowHeaderView(tableProduct); loadData(); } private void loadData() { try { ProductAPI productAPI=APIclient.getClient().create(ProductAPI.class); productAPI.findAll().enqueue(new Callback<List<Product>>() { @Override public void onResponse(Call<List<Product>> call, Response<List<Product>> response) { if(response.isSuccessful()) { DefaultTableModel defaultTableModel=new DefaultTableModel(); defaultTableModel.addColumn("id"); defaultTableModel.addColumn("name"); defaultTableModel.addColumn("price"); defaultTableModel.addColumn("description"); for(Product p:response.body()) { defaultTableModel.addRow(new Object[] { p.getId(),p.getName(), p.getPrice(),p.getDescription() }); System.out.println(p); } tableProduct.setModel(defaultTableModel); } } @Override public void onFailure(Call<List<Product>> arg0, Throwable t) { JOptionPane.showConfirmDialog(null,t.getMessage()); } }); } catch (Exception e) { JOptionPane.showConfirmDialog(null, e.getMessage()); } }
}
这是ProductApi界面
import java.util.List; import entities.Product; import retrofit2.Call; import retrofit2.http.GET; public interface ProductAPI { @GET Call<List<Product>> findAll(); }
和productController.java
import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.util.MimeTypeUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import com.demo.entites.Product; import com.demo.services.ProductService; @RestController @RequestMapping("api/product") public class ProductController { @Autowired private ProductService productService; @RequestMapping(value="findall", method=RequestMethod.GET, produces = {MimeTypeUtils.APPLICATION_JSON_VALUE}, headers = "Accept=application/json") public ResponseEntity<Iterable<Product>> findAll(){ try { return new ResponseEntity<Iterable<Product>> (productService.findAll(),HttpStatus.OK); } catch (Exception e) { return new ResponseEntity<Iterable<Product>>(HttpStatus.BAD_REQUEST); } } }
并且链接http://localhost:9596/api/product/findall给了我这个json数据
[{“ id”:1,“名称”:“电话”,“价格”:50.0,“描述”:“ micromax”}]]
我正在使用jdk 1.8,rertofit 2.8.2,okkhttp 3.8.0
我试图在弹簧应用中实现摆动,其中弹簧部分工作正常,但是在摆动应用中会出错。这是我正在尝试构建的应用程序(https://www.youtube.com/watch?...
Retrofi 2.9.0需要okhttp 3.14.9。在版本3.8.0中,尚未实现方法HttpUrl.get
。