Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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 通过RESTful web服务编辑对象_Java_Rest_Web Services_Http - Fatal编程技术网

Java 通过RESTful web服务编辑对象

Java 通过RESTful web服务编辑对象,java,rest,web-services,http,Java,Rest,Web Services,Http,我正在编写一个java应用程序,其中有一些事件,我需要一个能够添加新事件和取消现有事件的客户端。我已经编写了一个方法,该方法应该连接到web服务并通过它取消事件。但是我在连接到该服务时遇到问题,我不断收到此异常情况: java.lang.RuntimeException: Failed : HTTP error code : 404 at org.unibl.etf.mdp.event.gui.EventAddCancelClient.cancelEvent(EventAddCancelClie

我正在编写一个java应用程序,其中有一些事件,我需要一个能够添加新事件和取消现有事件的客户端。我已经编写了一个方法,该方法应该连接到web服务并通过它取消事件。但是我在连接到该服务时遇到问题,我不断收到此
异常情况

java.lang.RuntimeException: Failed : HTTP error code : 404
at org.unibl.etf.mdp.event.gui.EventAddCancelClient.cancelEvent(EventAddCancelClient.java:131)
at org.unibl.etf.mdp.event.gui.EventController.cancelEvent(EventController.java:39)
at org.unibl.etf.mdp.event.gui.EventForm.buttonCancelActionPerformed(EventForm.java:86)
at org.unibl.etf.mdp.event.gui.EventForm.access$0(EventForm.java:85)
at org.unibl.etf.mdp.event.gui.EventForm$2.actionPerformed(EventForm.java:64)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:269)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6578)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3343)
at java.desktop/java.awt.Component.processEvent(Component.java:6343)
at java.desktop/java.awt.Container.processEvent(Container.java:2259)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4961)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2317)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4793)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4539)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4480)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2303)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2758)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4793)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:766)
at java.desktop/java.awt.EventQueue.access$500(EventQueue.java:97)
at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:717)
at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:711)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:89)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:99)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:739)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:737)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:89)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:736)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:199)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
这是我用于连接到服务的方法的代码:

public static void cancelEvent(int id) {
        try {
            URL url = new URL(BASE_URL + id); //BASE_URL = "http://localhost:8080/InfoEvent/service/events/"
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setDoOutput(true);
            conn.setRequestMethod("PUT");
            OutputStream os = conn.getOutputStream();
            // os.write("");
            os.flush();
            if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
                throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode());
            }
            os.close();
            conn.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }       
}
此外,我不确定如何处理方法中的这部分代码:

os.write("");
这是服务中用于取消事件的方法:

@PUT
@Produces(MediaType.APPLICATION_JSON)
@Path("/cancel/{id}")
public static Response setCanceled(@PathParam("id") int id) {
    if(EventSetup.cancelEvent(id)) return Response.status(200).entity(EventSetup.getById(id)).build();
    else return Response.status(500).entity("Error while canceling event!").build();
}

你得到了404,这意味着URL不存在

尝试使用有效ID与邮递员点击此URL


你会看到你会得到一个404。因此,基本上您的端点不正确,或者应该接收该调用的服务没有在您的计算机中运行和启动(因为它是本地主机)

您得到的是404,这意味着资源URL不存在。查看基本URL的注释。它显示以
/event/
结尾的基本url。然后,您所要做的就是附加id。然后查看服务器中的资源方法<代码>“/cancel/{id}”。
事件
在哪里出现?也许你还想在id之前将
取消
添加到URL中。@PaulSamsotha谢谢,我已经监督过了。现在可以了。