Error: Unsupported Media Type (Codename One)

Error: Unsupported Media Type (Codename One)

我正在尝试从我在 NetBeans IDE 上的 CN1 应用程序发送 POST 请求,但我每次 运行 应用程序 "Error 415: Unsupported Media Type" 时都会收到此错误。这是我的代码:

请求代码:

@Override
    protected void onMain_ButtonAction(Component c, ActionEvent event) {
    String name=findTextField(c).getText();
    String qty=findTextField1(c).getText();

    ConnectionRequest r= new ConnectionRequest(){                       
           @Override
            protected void readResponse(InputStream input) throws IOException {                              
                 }                  
           };    
       r.setUrl("http://localhost:8080/webservicess/webresources/getreq/post");
       r.setPost(true);
       r.setHttpMethod("POST");       
       r.addArgument("name", name);
       r.addArgument("quantity", qty);
       NetworkManager.getInstance().addToQueueAndWait(r);          
    }

}

REST 服务

@POST
    @Path("post")
    @Consumes("application/json")
    public void putJson(Product product) {

        String result = "Product recieved : " + product;
        System.out.println(""+result);
    }
}

Product.java class

class Product {
    public String name;
    public int quantity;

    Product(){

    }

}

错误信息的截图请查看附件。 我想要一种情况,当我单击“提交”按钮时,为产品名称和数量输入的值应显示在 REST 控制台上。请在这件事上救救我。

此致,

Yahya-Imam Munir Kolapo

基于POST JSON fails with 415 Unsupported media type, Spring 3 mvc

您需要设置接受请求 header 您可以在 Codename One thru addRequestHeader:

r.addRequestHeader("accept", "application/json");

你遇到的另一个问题有点误导,但我猜网络服务在 body 中接受 JSON 而不是标准的 post 参数,所以这应该可以工作:

final String name = findTextField(c).getText();
final String qty = findTextField1(c).getText();

ConnectionRequest r= new ConnectionRequest(){    
        @Override
        protected void buildRequestBody(OutputStream os) throws IOException {
            StringBuilder val = new StringBuilder("{\"name\":\"");
            val.append(name);
            val.append("\",\"quantity\":");
            val.append(qty);
            val.append("}");
            if(shouldWriteUTFAsGetBytes()) {
                os.write(val.toString().getBytes("UTF-8"));
            } else {
                OutputStreamWriter w = new OutputStreamWriter(os, "UTF-8");
                w.write(val.toString());
            }                                  
        }
        @Override
        protected void readResponse(InputStream input) throws IOException {                              
        }                  
       };    
   r.setUrl("http://localhost:8080/webservicess/webresources/getreq/post");
   r.setPost(true);
   NetworkManager.getInstance().addToQueueAndWait(r);